@shippaisya

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【GAS】 for文が動いてない気がする。

グーグルフォームから、カレンダーとスプレッドシートに予定を挿入し、ラインに送信するというものを、このサイトを中心に色々なサイトを見ながら作ってみました。終わった予定(今日以前)はスプレッドシートから消去(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)
  }
}
}
}

qiita.jpg

学生の頃にプログラミングはかじった程度なので、初心者なりに作ってみたのでかなり下手くそなコードになっているかと思います。
終了時間(H行)を過ぎたら消えてほしいのです。ちなみに質問投稿日は4/25です。

自分で試したこと

なんとなくfor文が機能していないような感じがしたので、for文を一度無効にした後、”row”に直接数字を当てはめると問題なく
deleteRowが機能しました。なのにfor文を有効にすると何も起きなくなります。
コードの実行ログにエラーはでません。

for(var row = lastRow;row <= 2; row--) {
この部分については row === 2 なども試してみましたが、さっぱりです。

どなたか、助けてください。

0 likes

1Answer

多分コードの書き方でエラー出てないかなと思います。

変数cell設定の末尾に;がされてなかったり、
ループ内if文で処理が無いのに;が入ってたりとか。

  1. コードのリファクタ
  2. for文の中身の処理をコメントアウトしたうえで動作テスト
  3. for文内の処理をテストしながらコメント外し

していくと良いと思います。

0Like

Comments

  1. @shippaisya

    Questioner

    早速のご回答ありがとうございこます。
    ;がされていないとかかなり初歩的なミスですね。。。
    コメントアウトも重要ですね。
    ありがとうございます。

Your answer might help someone💌