実現したいこと
GASを用いて、スプレッドシート上で値が入力されている最後の行まで処理を行いたい。
前提
https://teratail.com/questions/tdhhsye5sh2cca
先日上記の質問をした者です。
いただいた回答で納得したつもりだったのですが、やっぱり思っていた挙動と違ったので、再質問させてください。
発生している問題・エラーメッセージ
function QRSendMail(){ var sheetname = 'customer_list'; const spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); const lastRow = spreadsheet.getLastRow(); var rangeValues = spreadsheet.getDataRange().getValues(); for(var i=3 ; i<=lastRow ; i++){ var sending = rangeValues[i][0];
最初、上記のように書いていて、いただいた回答に従い、下記のように修正しました。(ifの条件内の=の削除)
function QRSendMail(){ var sheetname = 'customer_list'; const spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); const lastRow = spreadsheet.getLastRow(); var rangeValues = spreadsheet.getDataRange().getValues(); for(var i=3 ; i<lastRow ; i++){ var sending = rangeValues[i][0];
当初の「i<=lastRow」だと、前回の質問のようなエラーが出てしまうのですが、
「i<lastRow」だと、エラーが出ない代わりに最後の行の1つ上の行までしか処理されません。
4~21行に値が入っている時、4~20行が処理されます。
配列の考え方がなかなか理解できず情けないのですが、なるべく分かりやすい説明と解決策をいただけると幸いです。
宜しくお願いいたします。
回答4件
あなたの回答
tips
プレビュー