質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

3501閲覧

GASがトリガーのみエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/15 05:20

Google スプレッドシートでスケジュールシートを作成しました。
古い日付の列を自動で削除するために以下のようなマクロを作成し、トリガーを設置しました。
毎日朝、トリガーが発動するように設定しましたが、エラーになってしまいます。

手動でスクリプトを実行した際には正常に処理されるのですが、トリガーのみエラーになってしまうようです。
コードが間違っているのか、トリガーの設置方が違うのか分からず...

解決策をご存知の方がいましたらお教えいただけると嬉しいです。

作成したマクロ

GAS

1/** @OnlyCurrentDoc */ 2function hide() { 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 var sheet = ss.getSheetByName("シート1"); 5 var column = 2; 6 var today = new Date(); 7 while (column <= ss.getLastColumn()){ 8 if(sheet.getRange(1, column).getValue() < (today.getTime()-(60*60*24*1000))){ 9 var range = sheet.getRange(1, column); 10 sheet.hideColumn(range); 11 } 12 column++; 13 } 14}

トリガー設定画面

イメージ説明

作成したスプレッドシート

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

たぶん、ss.getLastColumn()ここの部分の記載ミスじゃないかと。
sheet.getLastColumn()にして試してみてください。

投稿2021/04/16 00:34

sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/16 01:24

ありがとうございます。 sheet.getLastColumn()にしたところ、エラーは出なかったのですが古い日付は消えませんでした。。
sawa

2021/04/16 01:31

>古い日付は消えませんでした 手動で実行すると消えますか?
退会済みユーザー

退会済みユーザー

2021/04/16 04:58

手動で実行しても消えませんでした。。
sawa

2021/04/16 06:05 編集

回答した部分だけの変更でまったく動かくなることは無いと思います。 一度非表示になってるすべての列を再表示させてから手動で実行し、どこの列まで非表示になるか検証を。 あと修正したコードをご提示ください。
退会済みユーザー

退会済みユーザー

2021/04/19 00:43

失礼しました! 一度非表示になってるすべての列を再表示させてから手動で実行し、どこの列まで非表示になるか検証を →こちらで今日以前の日付が消えました。 明日トリガーが実行されるか確認してみます。
退会済みユーザー

退会済みユーザー

2021/04/21 00:16

トリガーが実行されました!ありがとうございます!
guest

0

手動ならOKということは、
勘ですが、getActiveSpreadsheet() を openById()に変えてみるとどうなるでしょうか。

var ss = SpreadsheetApp.openById("yon10jiguraiarunagainagai-mojiretsugaidde5zaimasu");

・エラー情報はなにか残されてないのか?(実行されてエラーなのか、実行がコケたのか)
・毎回エラーなのか、ときどきエラーなのか?

投稿2021/04/15 07:35

FromMZ1500

総合スコア496

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/15 08:15

回答ありがとうございます。 毎回エラーになり、エラーメッセージには下記が出ます。 Exception: Please select an active sheet first. at hide(非表示:7:23)
退会済みユーザー

退会済みユーザー

2021/04/16 00:15

openById()を入れたところ、手動実行時にもエラーが出てしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問