スプレッドシートのGASスクリプトにて、日前以前のタイトルを隠すスクリプトについて質問いたします。
1度はうまくいったスクリプトなので、何がダメなのかが自分自身わかりません,,,
どなたかご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。
①前提
スプレッドシートA:L列に項目が記載されています。
C列には日付が入力されています。ex 2021/07/01
1行目,2行目は項目のタイトルが入力されています。
3行目からimportrange関数で別シートからA:Lまで転置しています。
内容は上記のものを転置しています。
②やりたい事
3列目は本日を起算して3日前からのものを表示し、4日前以上のものは非表示にする。という設定をしたいです。
【スクリプト】
function HideRowsBeforeToday() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const s = ss.getSheetByName('Sheet1'); // シート名で指定
const values = s.getRange('C:C').getValues(); //A列に日付けが入っているので、配列で取得。
const today = new Date(new Date().setHours(0, 0, 0, 0)); //本日の0時の日付を作成
//後続でIndexOfするので、それぞれ文字列にする。
const arrayDateToString = values.map(String);
const todayToString = Utilities.formatDate(today, 'JST', "E MMM dd yyyy HH:mm:ss 'GMT'Z '(Japan Standard Time)'");
//今日の日付のindexを取得
const indexOfToday = arrayDateToString.indexOf(todayToString);
//2行目から3日までの行を非表示する。
s.hideRows(2, indexOfToday-3);
}
エラーコード
11:08:12 エラー
Exception: Those rows are out of bounds.
HideRowsBeforeToday @コードgs:16
③困っている事
一度はうまくいって非常時設定がうまくいったのですが、トリガー設定を毎日0~1時で設定した後、エラーが続きます。試しにスクリプトの実行をそのまま押してもうまくいきません。
あなたの回答
tips
プレビュー