前提
スプレッドシートでGASを書いています。(初心者です。)
for文を定義しているのですが、繰り返し処理がされない事象が発生。
別の実行コードでは同じ書き方で処理されていたのに、それをコピペしたこちらでは繰り返し処理がされず色々と調べたのですが、logを吐き出して見ていても理由が分からず質問するに至りました。
大きなコードの一部を取り出して原因究明をしています。
こちらに貼り付けるコードは自分で究明して問題になっている部分のみとしています。
どなたかご解明よろしくお願い申し上げます。
実現したいこと
以下のコード例で言うと、
①36行目15列にある「7」という数値を利用して
②36行目から42行目までの7行分の値(値も7列分)を
③二次元配列として吐き出して
④最終的には指定した範囲(getvaluesの範囲と行列数の一致が必要、は理解済み)に③をsetvalues
※以下では④のコードは省いています。
したい、という内容です。
発生している問題・エラーメッセージ
このコードは大きなコードの一部ですが、
大きいコード側でgetRange時に行数がうまく取得できず、
Exception: The number of rows in the range must be at least 1.
が出て、以下コードで言う var mb11ves = [ ]
に配列が入っておらず空欄で行数が返されてない、というところから掘って原因究明を進めているところです。
以下のコードでは現時点で1行7列だけはpushして希望の行が配列取れていますが、処理が終わってしまい7回繰り返してくれません。
コードを分解してデバッグしていましたがどうやらfor文がうまく機能していないのではというところまで突きつめたのですが、その理由が分からず詰んでいます。
該当のソースコード
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('案件管理表'); var row = 36;//セルの行数を取得 var mb11v = sheet.getRange(row, 15).getValue();//件数(36行:15列のvalueは7という数値) for (var i = mb11v; i > 0; i--) { //以下の値(7列)を繰り返し回数分取得して配列に格納したいmb11v回数から1づつ減算することで繰り返し処理を設定 var mb11ves = [] mb11ves.push ( sheet.getRange(row - 1 + i , 30).getValue() ,sheet.getRange(row - 1 + i , 32).getValue() ,sheet.getRange(row - 1 + i , 31).getValue() ,sheet.getRange(row - 1 + i , 33).getValue(),sheet.getRange(row - 1 + i , 34).getValue(),sheet.getRange(row - 1 + i , 35).getValue(),sheet.getRange(row - 1 + i , 37).getValue() ); } console.log(sheet.getRange(row -1 + i , 30).getValue() );//なぜかこれがiが0で35行目のデータ(14)を拾ってくる。42行目が欲しいのに。 console.log(i);//0と出る console.log(row);//これは36と出る(当たり前) console.log(mb11v);//これも7と出る console.log([sheet.getRange(row - 1 + i , 30).getValue() ,sheet.getRange(row - 1 + i , 32).getValue()]) //試しに2列分のログを出力。42行30列(32列)のvalueにならず、35行30列のvalueを返してしまう、、、iが0扱いで、繰り返し処理もしない、、、) console.log(mb11ves);//ここは欲しいデータの頭の36行目の配列が吐き出されるが、1行分しか返さず繰り返し処理がされない、mb11vが7の設定なので、7行分繰り返したい }
試したこと
該当部分だけ抜き出して、変数を実数にしてテストしていました。
以下ログです。
[ 14, 17710 ]は35行目で欲しくない値です。
[ 21, 20189, 13, 11536, 8653, 5500, 3153 ]は36行目で欲しい情報ですが、そこから7回、42行目までが繰り返されません。
【当方環境での実行ログ】
12:50:04 お知らせ 実行開始
12:50:05 情報 14
12:50:05 情報 0
12:50:05 情報 36
12:50:05 情報 7
12:50:05 情報 [ 14, 17710 ]
12:50:05 情報 [ 21, 20189, 13, 11536, 8653, 5500, 3153 ]
12:50:05 お知らせ 実行完了

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/05 05:30