実現したいこと
2枚のスプレッドシートで複数の条件を追加し情報を抽出したい。
前提
以下の条件で情報を抽出したい場合、どのようなGASを使用すべきでしょうか。
・シート2のAH列とシート3のF列の情報が完全一致
・シート2のC列とシート3のG列の情報が完全一致
・シート3のH列に10月1日から10月31日までの期間を含む年月が記載されている
・シート3のI列に10月1日から10月31日までの期間を含む年月が記載されている
上記が一致した場合
・シート2のG列にシート3のH列を書き込み
・シート2のH列にシート3のI列を書き込み
・シート2のBC列にシート3のA列を書き込み
・同じ条件が複数あった場合は同じ条件の行のすぐ下に行を一行追加して書き込み
・それ以外の場合は空白
発生している問題・エラーメッセージ
エラーも表示されず、書き込みもされずでした。
エラーメッセージ
該当のソースコード
function transferDataWithLinelnsertion(){ const ss = SpreadsheetApp.getActiveSpreadsheet); const sheet2 = ss.getsheetByName(シート2);//シート2の名前を指定 const sheet3 = ss.getsheetByName(シート3);//シート3の名前を指定 //シートデータの取得 const data2 = sheet2.getDataRange().getValues(); const data3 = sheet3.getDataRange().getValues(); //シート2のデータを処理 for (leti= 1; i< data2.length; i++){ //更新する行 const ahVal= data2[i][32];//シート2のAH列 const cVal= data2[i][2];//シート2のC列 let insertCount = 0; //挿入された行数をカウント for (let j = 1; j < data3.length; j++){// シート3の各行を確認 const fVal = data3[j][5];//シート3のF列 const gVal = data3[i][6];//シート3のG列 const hVal = data3[i][7];//シート3のH列 const iVal = data3[i][8];//シート3のI列 const aVal= data3[i][0];//シート3のA列 //条件を確認 if (ahVal === fVal && cVal === gVal) { //行を追加してデータを書き込む sheet2.insertRowAfter(i+insertCount);//現在の行のすぐ下に行を挿入 sheet2.getRange(i + insertCount + 1, 7).setValue(hVal); sheet2.getRange(i + insertCount + 1, 8).setValue(iVal); sheet2.getRange(i + insertCount + 1,55).setValue(aval); insertCount++;//挿入された行数を増やす } } //一致しなかった場合は空白を設定 if (insertCount === 0) { sheet2.getRange(i + 1, 7).setValue("); sheet2.getRange(i + 1, 8) .setValue("); sheet2.getRange(i + 1, 55) .setValue("); } } }
試したこと
3パターンぐらい書き出しましたが結果どれも同じく何も書き込みもされませんでした。
大変お手数をおかけいたしますが、どなたかお力をお貸しいただけますと幸いです。
何卒よろしくお願いいたします。