gasについて詳しい方お力を貸してください。

gasについて詳しい方お力を貸してください。

以前にも質問させていただきました
https://teratail.com/questions/kufw61in668t65
現状のスクリプトからさらにP-Q列にも追加したい(N列と同じ条件で)

追記 同じように追加したのですが、部分的に列がずれて抽出されてしまいます、

どなたかよろしくお願いいたたします。

//重複を削除してから挿入(データ追加版) function myFunction() { //初期設定 const rowBegin = 2;//各シートともに開始行は2行目 const colBegin1 = 1;//シート1はA列から抽出 const colBegin2 = 4;//シート2はD列から挿入 const colCount = 5;//抽出、挿入は5列分 const colAdd1 = 6;//シート1の追加データはF列から const colAdd2 = 14;//シート2の追加データはN列へ const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet1 = ss.getSheetByName('シート1'); const sheet2 = ss.getSheetByName('シート2'); //各シートのデータを取得 const lastRow1 = sheet1.getLastRow(); const lastRow2 = sheet2.getLastRow(); const value1 = sheet1.getRange(rowBegin, colBegin1, lastRow1 - rowBegin + 1, colCount).getValues(); const valueAdd1 = sheet1.getRange(rowBegin, colAdd1, lastRow1 - rowBegin + 1, 1).getValues(); const value2 = sheet2.getRange(rowBegin, colBegin2, lastRow2 - rowBegin + 1, colCount).getValues(); //シート1のデータからシート2との重複を削除したデータと追加データを作成 const united = []; const add = []; //処理中のデータのインデックスを得るためfor(of)を forEachに変更 value1.forEach((item1, i) => { let isSame = false; for (const item2 of value2) { if (item1.toString() == item2.toString()) { isSame = true; break;//一致したら直ちにisSameの真偽判定へ } } if (!isSame) { united.push(item1); add.push(valueAdd1[i]);//便乗して追加データの同じ行の値を配列に加える } }); //シート2の最終行に挿入 if (united.length > 0) { sheet2.getRange(lastRow2 + 1, colBegin2, united.length, united[0].length).setValues(united); sheet2.getRange(lastRow2 + 1, colAdd2, add.length, add[0].length).setValues(add); } } 同じように追加してみたのですがうまくいきません、、、、 ```ここに言語を入力 //重複を削除してから挿入(データ追加版) function myFunction() { //初期設定 const rowBegin = 2;//各シートともに開始行は2行目 const colBegin1 = 1;//シート1はA列から抽出 const colBegin2 = 4;//シート2はD列から挿入 const colCount = 5;//抽出、挿入は5列分 const colAdd1 = 6;//シート1の追加データはF列から const colAdd2 = 14;//シート2の追加データはN列へ const colAdd3 = 7;//シート1の追加データはG列から const colAdd4 = 15;//シート2の追加データはO列へ const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet1 = ss.getSheetByName('シート1'); const sheet2 = ss.getSheetByName('シート2'); //各シートのデータを取得 const lastRow1 = sheet1.getLastRow(); const lastRow2 = sheet2.getLastRow(); const value1 = sheet1.getRange(rowBegin, colBegin1, lastRow1 - rowBegin + 1, colCount).getValues(); const valueAdd1 = sheet1.getRange(rowBegin, colAdd1, lastRow1 - rowBegin + 1, 1).getValues(); const valueAdd2 = sheet1.getRange(rowBegin, colAdd3, lastRow1 - rowBegin + 1, 1).getValues(); const value2 = sheet2.getRange(rowBegin, colBegin2, lastRow2 - rowBegin + 1, colCount).getValues(); //シート1のデータからシート2との重複を削除したデータと追加データを作成 const united = []; const add = []; //処理中のデータのインデックスを得るためfor(of)を forEachに変更 value1.forEach((item1, i) => { let isSame = false; for (const item2 of value2) { if (item1.toString() == item2.toString()) { isSame = true; break;//一致したら直ちにisSameの真偽判定へ } } if (!isSame) { united.push(item1); add.push(valueAdd1[i]); add.push(valueAdd2[i]);//便乗して追加データの同じ行の値を配列に加える } }); //シート2の最終行に挿入 if (united.length > 0) { sheet2.getRange(lastRow2 + 1, colBegin2, united.length, united[0].length).setValues(united); sheet2.getRange(lastRow2 + 1, colAdd2, add.length, add[0].length).setValues(add); sheet2.getRange(lastRow2 + 1, colAdd4, add.length, add[0].length).setValues(add); } }

コメントを投稿

0 コメント