実現したいこと
あるスプレッドシートのタブから、他のタブにVLOOKUP関数を適用した時のような形でデータを転記したい。
前提
GASでスプレッドシートを処理するコードを書いていますが、元は3列分のデータだけを転記したいのですが、全部の配列データを返してしまい、うまく転記することができません。
エラーメッセージ
該当のソースコード
GAS
1ソースコード
function MyVLOOKUP_B() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const SearchSheet = ss.getSheetByName('〇〇');
const LastRow = SearchSheet.getLastRow();
const ListSheet = ss.getSheetByName('△△');
const DataSheetValues = ss.getSheetByName('△△').getDataRange().getValues();
const Key = [];
const Data = [];
// キーと返したいデータを配列に格納
for (let i = 1; i < DataSheetValues.length; i++){
Key.push(DataSheetValues[i][4]);
Data.push(DataSheetValues[i][10]);//この10、11、12をSearchSheetの所定の列にKeyに対応する形で転記したいと思っています。
Data.push(DataSheetValues[i][11]);
Data.push(DataSheetValues[i][12]);
}
// 検索キーを取得し、対応したデータを返す
let SearchKey = SearchSheet.getRange(2,3,LastRow - 1,8).getValues();
for (let i = 1; i < SearchKey.length; i++){
SearchKey[i][3] = Data[Key.indexOf(SearchKey[i][0])];
SearchKey[i][4] = Data[Key.indexOf(SearchKey[i][1])];
SearchKey[i][5] = Data[Key.indexOf(SearchKey[i][2])];
}
console.log(SearchKey)
// 対応データの入った配列「SearchKey」をシートに書き込む
SearchSheet.getRange(2,6,LastRow - 1,8).setValues(SearchKey);
}
試したこと
いろいろ試していますが、
for (let i = 1; i < SearchKey.length; i++){
SearchKey[i][3] = Data[Key.indexOf(SearchKey[i][0])];
SearchKey[i][4] = Data[Key.indexOf(SearchKey[i][1])];
SearchKey[i][5] = Data[Key.indexOf(SearchKey[i][2])];
}
の部分のコードの内容をよく理解できず、うまく処理することができません。キーと返したいデータを配列に格納するところまでは上手くできています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
0 コメント