onEdit での行や列の挿入、削除の判別

828 views
Skip to first unread message

高橋雄也

unread,
Oct 7, 2015, 2:46:17 AM10/7/15
to Google Apps API Japan
初めて投稿させていただきます。
宜しくお願いします。


スプレッドシート上でシートを2つ用意し、
一方のセル内の値が変更されたら
もう一方も同内容の更新がされる。

ということをやりたいなと考えております。


基本的な動作は実現できたのですが、
行や列の挿入をしてしまうとズレてしまいます。

onEdit で行・列の挿入、削除を判別できれば難しくなさそうなのですが、
GASのドキュメントを見てもそのような判別は見当たりませんでした。

onChangeでできるのかなと思ったのですが、
挿入しても、削除してもうんともすんともいいません。。


判別が可能、
もしくは別の方法で実現できるよということであれば、
その方法をご教示頂けましたら幸いです。


また、上記のお願い以外にも私のコードを下記に載せますので、
「こういう方法だともっと良くなるよ」とご教示いただける心優しい方がいらっしゃいましたら、

私の後学の為にご教示頂けましたら、非常に幸いです。


至らない点がありましたらお許し下さい。
宜しくお願い致します。



以下コード
/**
 * A列からC列までのセルが更新されるともう一方のシートも自動更新
 * シート1・シート2
 */
function onEdit(E) {
  var sh = E.source.getActiveSheet()
     ,shName = sh.getName()
     ,range = E.range
     ,cellPoss = range.getA1Notation()
     ,pattern;

  if(cellPoss.indexOf(":")>=0){
    if(cellPoss.indexOf("A")>=0){
      if(cellPoss.indexOf("B")>=0 || cellPoss.indexOf("C")>=0){
        pattern = 1;
      }else{
        pattern = 2;
      }
    }else if(cellPoss.indexOf("B")>=0 || cellPoss.indexOf("C")>=0){
      pattern = 1;
    }else{
      pattern = 2;
    }
    pattern = 2;
  }else{
    pattern = 1;
  }

  var index
     ,rangeValues
     ,rangeCondition;
  switch(pattern){
    case 1:
      rangeValues = range.getValues()
      break;
    case 2:
      index = cellPoss.indexOf(":");
      cellPoss = cellPoss.slice(0,index+1)+"C"+cellPoss.slice(index+2);
      range = sh.getRange(cellPoss);
      rangeValues = range.getValues()
      break;
  }
  rangeCondition = cellPoss.indexOf("A")>=0 || cellPoss.indexOf("B")>=0 || cellPoss.indexOf("C")>=0;

  if(rangeCondition && shName=="シート1"){
    E.source.getSheetByName("シート2").getRange(cellPoss).setValues(rangeValues);
  }else if(rangeCondition && shName=="シート2"){
    E.source.getSheetByName("シート1").getRange(cellPoss).setValues(rangeValues);
  }
}

Tatsuya Nakano

unread,
Oct 7, 2015, 8:38:16 AM10/7/15
to Google Apps API Japan
中野です。

関数じゃダメなんですよね、きっと。
=sheet1!A1
=IMPORTRANGE()

stackoverflowに似たような投稿がありました。
※申し訳ないです、中までちゃんと見れてません・・


2015年10月7日水曜日 15時46分17秒 UTC+9 高橋雄也:

高橋雄也

unread,
Oct 7, 2015, 8:26:52 PM10/7/15
to Google Apps API Japan
関数だと不都合が出てきそうなので、
可能であればGASでと考えてました。


ありがとうございます!
時間があるときにじっくり読んでみたいと思います!



2015年10月7日水曜日 21時38分16秒 UTC+9 Tatsuya Nakano:
Reply all
Reply to author
Forward
0 new messages