【GAS】 for文が動いてない気がする。
Q&A
Closed
グーグルフォームから、カレンダーとスプレッドシートに予定を挿入し、ラインに送信するというものを、このサイトを中心に色々なサイトを見ながら作ってみました。終わった予定(今日以前)はスプレッドシートから消去(deleterow)していくというものを、GASを用いて作成中です。ほとんどうまくいっていたとは思っていたのですが、多少の不具合があったので色々といじっているうちに先日より、スプレッドシートから行が消えなくなってしまいました。消えたと思ったら、明日の分まで消えてしまったりで試行錯誤した結果うんともすんとも言わなくなってしまいました。
日付が未定の予定も入れなくてはいけないので、日付のセルが空白の場合は何もしないという処理にしているつもりです。
/*--終了したイベントを消す--*/
function deleterow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet1');
var lastRow = sheet.getLastRow();
//var row = 3
for(var row = lastRow;row <= 2; row--) {
var cell = sheet.getRange(row,8).getValue()
if (cell === ''){
;
}else{
var syoukyo = Utilities.formatDate(cell, 'JST', 'yyyy/MM/dd');
var date = new Date();
var today = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd');
//Logger.log(syoukyo)
//Logger.log(today)
if (syoukyo > today){
;
}else if (syoukyo < today){
sheet.deleteRow(row)
}
}
}
}
学生の頃にプログラミングはかじった程度なので、初心者なりに作ってみたのでかなり下手くそなコードになっているかと思います。
終了時間(H行)を過ぎたら消えてほしいのです。ちなみに質問投稿日は4/25です。
自分で試したこと
なんとなくfor文が機能していないような感じがしたので、for文を一度無効にした後、”row”に直接数字を当てはめると問題なく
deleteRowが機能しました。なのにfor文を有効にすると何も起きなくなります。
コードの実行ログにエラーはでません。
for(var row = lastRow;row <= 2; row--) {
この部分については row === 2 なども試してみましたが、さっぱりです。
どなたか、助けてください。