GASのトリガーについて

1,948 views
Skip to first unread message

とと

unread,
Mar 1, 2018, 8:15:50 PM3/1/18
to Google Apps API Japan
はじめて投稿させていただきます。
このグループへの参加も今日からで、不慣れで失礼なところがあるのかもしれないですが、
ご指導、ご鞭撻賜れば幸いです。

さて、Google Apps Scriptのトリガーについては様々な制約があることは理解していますが、
実のところ、どうも分からないところがあり、ご質問させていただきます。
おそらく、過去に遡って探せば出てくるのも知れないですが、御教示ただける方がいると嬉しいいです。

現在、
[1]「Script runtime 6 min / execution」の制約から、5分で一度処理を中断し、2分後に
   継続起動するように組んでいます。
[2]朝4時(4~5時)に処理を開始するように組んでいます。
[3]「Triggers total runtime 90 min / day」の制約ですが、上記より止まる時間は5:30以降と期待して
   いますが、5:30前に止まっています。
[4]「Triggers 20 / user / script」の制約かも、とも思うのですが、18回で止まったり、
   22回くらい動いていたりの状況です。
   特に「Triggers 20 / user / script」の意味がいまひとつ理解できていないです。

特に御教示いただきたい点として、上記[3][4]の制約はどのような管理になっているのでしょうか?
90 min / dayは、毎朝4時に起動すると、23時間前の5時頃の処理時間も含めて90分なのでしょうか?
20 / user / scriptについても、23時間前のカウントも影響するのでしょうか?
また、20 / user / scriptの「script」とはどのような単位なのでしょうか?
(一つのファイルに複数の「script」? ファイルをコピーしても同じ「script」?)

身勝手な質問かもですが、御教示いただければありがたいです。

Message has been deleted

とと

unread,
Mar 3, 2018, 11:46:58 PM3/3/18
to Google Apps API Japan
回答でなくても、同様な問題を抱えている方がいたらコメントいただけますか?
(自分が特別でないことを知れると少し安心できるのですが。。。)

また、トリガーに設定されている情報を取り込む方法があれば知りたいです。
getHandlerFunction()でfunction名を知ることができることはわかるのですが、
それが、いつ動くようにセットされたのか、知りたいのですが。
それが分かれば、その時刻に動くことができなかったことを知ることが
できると思うのですが。

また、getTriggerSourceId()、getUniqueId()の使い方が分かってないです。
このIDを利用して、時刻やエラーの状態を知りえたりするのでしょうか。

soundTricker

unread,
Mar 4, 2018, 11:13:16 PM3/4/18
to Google Apps API Japan
大橋です。

> 特に御教示いただきたい点として、上記[3][4]の制約はどのような管理になっているのでしょうか?
>90 min / dayは、毎朝4時に起動すると、23時間前の5時頃の処理時間も含めて90分なのでしょうか?

記憶では制約リセット後、最初にメールを送ってから24時間の管理になっているはずです。
例えば、クオータのリセット後、 1時間後にトリガーを起動した場合、その後23時間59分間のうちにトリガーを起動できるのが90分という仕様のはずです。


> 20 / user / scriptについても、23時間前のカウントも影響するのでしょうか?
> また、20 / user / scriptの「script」とはどのような単位なのでしょうか?
> (一つのファイルに複数の「script」? ファイルをコピーしても同じ「script」?)

1プロジェクトです。 1プロジェクト内に複数のファイルを含めても1スクリプトになります。
プロジェクトをコピーした場合は別プロジェクトになります。




2018年3月2日金曜日 10時15分50秒 UTC+9 とと:

soundTricker

unread,
Mar 4, 2018, 11:17:29 PM3/4/18
to Google Apps API Japan
大橋です。

純粋に監視の意味だけで言えば、
ダッシュボードで動きを見るのがいいと思います。

また設定を見たいのであれば、
getEventType()と、getTriggerSource()を見てください。
実行結果などの情報は、スクリプト内からは取れません。



2018年3月4日日曜日 13時46分58秒 UTC+9 とと:

とと

unread,
Mar 5, 2018, 2:25:40 AM3/5/18
to Google Apps API Japan
大橋さん
ありがとうございます。
やはり、90 min / dayのdayは24時間の意味なんですね。納得です。
きっと、20 / user / scriptも  / day があって24時間の間がないと不都合があるのでしょうね。

私の認識では、
getEventType()は、CLOCK/ON_OPEN/ON_EDIT/ON_FORM_SUBMITON_CHANGEのタイプを知ることができる。
getTriggerSource()は、SPREADSHEETS/CLOCK/FORMS/DOCUMENTSのタイプを知ることができる。
とのことで、CLOCKのデータは得られないと思うのですが、いかがでしょうか。

「ダッシュボード」について、御教示ありがとうございます。
まだまだ勉強不足でした、これから勉強します。
今後ともよろしくお願いします。

とと

unread,
Mar 5, 2018, 2:38:29 AM3/5/18
to Google Apps API Japan
また補足で恐縮です。
やりたいこととして、「90 min / day」ないし「20 / user / script」の制約に引っかかっることは仕方ないこととして、
次にスプレッドシートを開いて、スクリプトをボタンで起動したときに、
その状態を表示したいのです。(onOpenではTriggerを参照できない認識です。)

例えば、「まだ次に起動されるトリガーがあるので、少し待て」とか、
「トリガー起動時刻は数時間前なので、やり直せ」とか、

スプレッドシートのデータが不完全なのは、データを見るとわかるのですが、
今動いているのか、待てば継続されるのか、待ってたらダメなのかが分からないんです。

ちなみに、無条件で手動でスクリプトを動かしたときに、トリガー起動と
二重処理となり、データがさらに混乱した経験ありです。

Keisuke Oohashi

unread,
Mar 5, 2018, 9:34:24 PM3/5/18
to google-app...@googlegroups.com
ととさん

大橋です。
やり方は色々あると思いますが、一つは素直にTrigger で叩かれる関数の最初に、最後の起動日をSpreadsheetの何処かに書いてしまうのがいいと思います。
Spreadsheetで困るならPropertiesとかですかね。
また二重起動を回避したいのであれば、LockServiceを使うべきです。


2018年3月5日(月) 16:38 とと <na2...@gmail.com>:
--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

とと

unread,
Mar 6, 2018, 11:05:29 PM3/6/18
to Google Apps API Japan
大橋さん

ありがとうございます。
起動日をSpreadsheetに書くことは実施していました。(onOpenで参照して「おかしい」は表示できるのですが。。。)
書き方をもう少し工夫してみようと思います。
Trigger の設定内容を直接ハンドリングできない、という認識で合ってますよね。
ちなみに、「90 min / day」ないし「20 / user / script」の制約の残りがどれくらいなどをハンドリングすることもできないですよね。

LockServiceについて勉強します。
まだまだ知識不足で申し訳ないです。今後ともよろしくお願いいたします。

Keisuke Oohashi

unread,
Mar 6, 2018, 11:10:24 PM3/6/18
to google-app...@googlegroups.com

> Trigger の設定内容を直接ハンドリングできない、という認識で合ってますよね。
> ちなみに、「90 min / day」ないし「20 / user / script」の制約の残りがどれくらいなどをハンドリングすることもできないですよね。

はいともに出来ません。

2018年3月7日(水) 13:05 とと <na2...@gmail.com>:
--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/google-apps-api-japan からこのグループにアクセスしてください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/google-apps-api-japan/fed91366-937a-49fe-8d8f-f3124bf62553%40googlegroups.com にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages