前提・実現したいこと
for (var flg = 0; flg < 3; flg=flg+1) {
flgが3よりも小さい間、繰り返しを行いたいのですが、
i=1の場合までの処理は結果として戻ってくるのですが、
その後の結果が出てくれません。
下記の条件を通過させる為にはどうしたら良いでしょうか?
else if (i = 2) {
var valueColumn = 12 ;
}
else if (i = 2) {
var setRow = 4 ;
}
該当のソースコード
function mainMessage(event) { //スプレッドのURLを指定 var ss = SpreadsheetApp.openById("スプレッドシートのID"); // 一覧を連想配列化 var sheet1 = ss.getSheetByName('シート2'); var sheet2 = ss.getSheetByName('シート1'); var kvRow = 2; // 開始する行数を定義(ヘッダは省く) var lastRow = sheet1.getLastRow(); //****************************************************** var i=0 Logger.log(i); for (var flg = 0; flg < 3; flg=flg+1) { var keyColumn = 1; // キーの列を定義 if (i == 0) { var valueColumn = 2 ; } else if (i == 1) { var valueColumn = 11 ; } else if (i == 2) { 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 == 0) { var setRow = 2 ; } else if (i == 1) { var setRow = 3 ; } else if (i == 2) { var setRow = 4 ; } else { } var setColumn = 2; // 挿入したい列数 sheet2.getRange(setRow, setColumn, sheet2.getLastRow(), 1).setValues(setData); i=flg; Logger.log(flg); Logger.log(i); }
試したこと
GAS初心者、プログラム未経験のため、対策がわかりません。
はじめは条件式の誤りかと思いましたが、何度やってもうまくいきません。
どこかの設定が抜けているのではと思いますが、それすらもわかりません。
で==にしたらどうなったのですか。図が改まってませんよ。
回答3件
あなたの回答
tips
プレビュー