Google Apps ScriptでCron実行→メールでアウトプット(スレッド化)
これまで未来サーバーを使ってPHPプログラムのCron実行を行っていたのですが、Google Apps ScriptからCron実行みたいなことができるということでこっちを使ってみました。
今回はこちらのブログを参考にさせていただきました↓
無料でお手軽Cron!Google Apps Scriptを使ってみる。 - きじとら
<トリガーの時間に関して>
トリガーを5分間隔にしたところ、04,09,14,...(分)と00,05,と5の倍数にはならないみたい?
5の倍数の分数にピッタリあった時間で何かしたい場合はトリガーを1分間隔にしてプログラム上で5分間隔に何かするのがいいみたいです。
<メールで出力>
また、この記事では僕がこれまで未来サーバーの"Cron Output"で見ていたような、echoやvar_dumpの結果をメール送信で見る方法が紹介されているのですが、これをそのまま実行すると、スレッド化されずバラバラの判定になりました。
せっかくGmailを使っているので、スレッド化させたいと思い、スレッド化されるようにしました。
ついでに日付・時刻もつけるなどいじってみました。
function myFunction() { var date = new Date(); var Now = Utilities.formatDate(date, "JST", "yyyy-MM-dd HH:mm:ss"); var response = UrlFetchApp.fetch("http://example/cron.php"); var title = "Cronの実行結果" var text = "Run at "+Now+"\n\n"+response.getContentText(); var threads = GmailApp.search("subject:"+title); if(!threads.length){ GmailApp.sendEmail("example@gmail.com", title, text); }else{ threads[0].reply(text); } }
色々つけて煩雑になってしまいましたが、
スレッド化のポイントは、目的のスレッドをsearchによって探し、それに対して返信する、ということです。
ここでは、スレッドにするメールのタイトルを予め決めておき、そのタイトルのスレッドがあるか検索、無ければメールを新規作成、あるならそれに対して送信します。