2014/10/1 - 2014/11/3

常用している Google App Script のアップデート

Gmail の古いメールを自動的にアーカイブ行きにするスクリプトを動かしていたのだが,あまりにも属性を参照しすぎているせいか,実行速度が遅くなっていたので,改善した.

改善前の挙動は以下の通り:

  1. Inbox スレッドを 100 件取得(GmailApp.getInboxThreads(0, 100))
  2. 古い順にソート
  3. 特定の属性(starred や ToMe label など)を持っていなければアーカイブ

改善するに辺り色々とサンプルコードを読んでいたところ,GmailApp.search() の検索時にフィルタしてしまうことでシンプルかつ高速に動作することを確認.

function archiveOldMails(checkImportance) {
  var threads = GmailApp.search('label:inbox is:unread older_than:14d -is:starred  -label:ToMe');
  for (var i = 0; i < threads.length; i++) {
    threads[i].markRead();
    threads[i].moveToArchive();
    if (i % 30 == 0) {
      Utilities.sleep(1000);
    }
  }
}

これでしばらく様子を見よう.