前提・実現したいこと
質問を再投稿します。
for文を使って、変数名flgに代入した値が3より大きくなったら処理を抜けるという
繰り返しの処理を行いたいのですが、ループ処理をせずに処理を抜けてしまって困っています。
全体で行っているのは、Vlookupの処理です。
シート1のA2をKeyとして、シート2よりVlookupの結果をかえし、for文で繰り返して、
シート2の参照先の列と、結果を貼り付けるシート1の行を1行ずつ、if分を使って
ずらしていく事をしています。
該当のソースコード
function mainMessage(event) {
//スプレッドのURLを指定
var ss = SpreadsheetApp.openById("1NKWRn-z-sgXL1HaYR94XxyKeJFoQhdhYmv8s13-xC2A");
// 一覧を連想配列化
var sheet1 = ss.getSheetByName('シート2');
var sheet2 = ss.getSheetByName('シート1');
var kvRow = 2; // 開始する行数を定義(ヘッダは省く)
var lastRow = sheet1.getLastRow();
// Logger.log(lastRow);
//**************************************************************
var i=1
Logger.log(i);
for (var flg = 0; flg < 3; flg=flg+1) {
var keyColumn = 1; // キーの列を定義
if (i = 1) { var valueColumn = 2 ; // 値の列を定義(ただしキー列<値列) } else if (i = 2) { var valueColumn = 11 ; // 値の列を定義(ただしキー列<値列) } else if (i = 3) { var valueColumn = 12 ; // 値の列を定義(ただしキー列<値列) } else { } var kvData = sheet1.getRange(kvRow, keyColumn, sheet1.getLastRow(), valueColumn).getValues(); Logger.log(kvData); var kvDic = {}; for each(var kv in kvData) { kvDic[kv[keyColumn - 1]] = kv[valueColumn - 1]; } // 値をセットする var sheet2 = ss.getSheetByName('シート1'); var startRow = 2; // 開始する行数を定義(ヘッダは省く) var targetColumn = 1; // キーになるコードの列を指定 var targetData = sheet2.getRange(startRow, targetColumn, sheet2.getLastRow(), 1).getValues(); Logger.log(targetData); var setData = []; for each(var targetRow in targetData) { setData.push([kvDic[targetRow[0]]]); } if (i = 1) { var setRow = 2 ; // 値の列を定義(ただしキー列<値列) } else if (i = 2) { var setRow = 3 ; // 値の列を定義(ただしキー列<値列) } else if (i = 3) { var setRow = 4 ; // 値の列を定義(ただしキー列<値列) } else { } var setColumn = 2; // 挿入したい列数 sheet2.getRange(setRow, setColumn, sheet2.getLastRow(), 1).setValues(setData); i=i+1; Logger.log(flg); Logger.log(i); }
試したこと
GAS初心者、プログラム未経験のため、対策がわかりません。
はじめは条件式の誤りかと思いましたが、何度やってもうまくいきません。
どこかの設定が抜けているのではと思いますが、それすらもわかりません。
回答1件
あなたの回答
tips
プレビュー