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によって探し、それに対して返信する、ということです。

ここでは、スレッドにするメールのタイトルを予め決めておき、そのタイトルのスレッドがあるか検索、無ければメールを新規作成、あるならそれに対して送信します。