GAS初心者です。汚いスクリプトですみません。スプレッドシートで以下のスクリプトが正常に作動するようにするにはどうすればよいでしょうか?
現在エラーはないのですが全く機能していないようです。
GAS
1function findRow(sheet,val,col){ 2 3 var dat = sheet.getDataRange().getValues(); //受け取ったシートのデータを二次元配列に取得 4 5 for(var i=1;i<dat.length;i++){ 6 7 if(dat[i][col-1] === val){ 8 9 return i+1; 10 11 } 12 13 } 14 15 return 0; 16 17} 18 19 var ss = SpreadsheetApp.getActiveSpreadsheet(); 20 var sh1 = ss.getSheetByName("シート1"); 21 var sh2 = ss.getSheetByName("シート2"); 22 var drop = sh1.getRange(17, 24).getValue(); 23 24 var list = findRow(sh2,drop,1); 25 26function onEdit(e){ 27 var row = e.range.getRow(); 28 var col = e.range.getColumn(); 29 var val = e.range.getValue(); 30 31 if(row === 17 && col === 24){ 32 if(list === 0){ 33 sh2.appendRow(drop); 34 } else { 35 for(k=2;k=9;k++){ 36 sh1.getRange(23+[k], 25).setValue(sh2.getRange(list, [k]).getValue()); 37 } 38 } 39 } else { 40 if((row === 25 || row === 26 || row === 27 || row === 28 || row === 29 || row === 30 || row === 31 || row === 32) && col === 25){ 41 sh2.getRange(list, row-23).setValue(val); 42 } 43 } 44}
実現したいこと
➀ シート1のX17に任意の値を入力するとシート2のA列から一致する値のあるセルを見つける、ない場合はA列の下に挿入する。
➁ ➀で見つけたセルの行について、
シート1のX17,Y25,Y26,Y27,Y28,Y29,Y30,Y31,Y32,Y33とシート2のA列J列をつなげる。J列にすでに値があればそれをつなげたシート1の各セルに表示する。
➂ シート2の対応するB列
➃ シート1の各セルを編集するとシート2の各セルも書き換えられる。