GAS 当日の日付の行をまとめて消したい

実現したいこと

当方GAS初心者です。
以下の「日付が古い行をまとめて消す」のスプリクトを、
「当日の日付の行をまとめて消す」に訂正いただきたいです。

参照元
https://myfunc.jp/items/00075/index.html

発生している問題・分からないこと

当日の日付の行の定義が分からない。

該当のソースコード

function onOpen() { // スプレッドシートを開いたときに実行される関数 // UIの取得 const ui = SpreadsheetApp.getUi() // メニューの表示名 const menu = ui.createMenu('スクリプト実行'); // メニューに追加するボタン menu.addItem('N日以上前の行を削除する', 'delete_old_records'); // メニューを画面に追加する menu.addToUi(); } function delete_old_records() { //////////////// 事前設定エリア ここから ///////////////// // 対象のスプレッドシートを指定 const ss_url = 'https://docs.google.com/spreadsheets/d/*********************'; // ログが書き込まれているシート名を指定 const sheet_name = 'ログ'; // 日時がどの列に入っているかを指定(A列なら1) const date_column = 1; // ログが何行目から書き込まれているかを指定(2行目から書き込まれていれば2) const offset = 2; // 何日分のログを残したいかを指定 const need_days = 7; //////////////// 事前設定エリア ここまで ///////////////// // スプレッドシートを開く。トリガーで動作させたいのでID or URLで開く const ss = SpreadsheetApp.openByUrl(ss_url); // ログが書き込まれているシートを開く const sheet = ss.getSheetByName(sheet_name); // ログをすべて取得する const values = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues(); // need_daysより前のログは不要なので、その日付を設定する let date_ago = new Date(); date_ago.setDate(date_ago.getDate() - need_days); date_ago = Utilities.formatDate(date_ago, 'JST', 'yyyyMMdd'); //比較に使用するためYYYYMMDD形式にする // 最終的に何行消すのかを格納する変数 let delete_rows_counter = 0; // ログを1行ずつチェックする for (let i = offset - 1; i < values.length; i++) { //オフセットで指定された行(0スタートなので-1)は飛ばす // 比較するためにyyyyMMdd形式に揃える let date_log = Utilities.formatDate(new Date(values[i][date_column - 1]), 'JST', 'yyyyMMdd'); //ログの日付 // N日前より以前のログであれば、カウンタを加算する if (date_log < date_ago) { delete_rows_counter++; } } // カウンタが1以上であれば、行の削除を実行する if (delete_rows_counter > 0) { sheet.deleteRows(offset, delete_rows_counter); } }

試したこと・調べたこと

上記の詳細・結果

・need_daysの定義を削除
・date_log = date_ago へ変更
全てが削除されてしまう。

補足

特になし

コメントを投稿

0 コメント