IFTTTのGmailのトリガー(主にスター)が上手く動かないのでGoogle Apps Scriptで対処する。

こんにちは、JAGA(ja_gaimopotato)です。

IFTTTが好きで結構使っているのですが、Gmail関連のトリガーが全然動きません。

スターにした時をトリガーにEvernoteへポストしたり、Omnifocusへ飛ばしたりしたいのですが動かない。

IFTTT

Ifttt notworking

これが不満だったので、IFTTTへ問い合わせたのですが返事も今のところなし。

ひとまず代替案としてGoogle Apps Script

ですので、とりあえずGoogle Apps Scriptで解決することにしました。

Google Apps Script — Google Developers

しかし、Google Apps Scriptについてはほとんど何もわかっていません。

Gmailのリファレンスだけ、ざっと見て今30分ほど触ってとりあえず完成したので、記事にしている状況です。

Gmail Service – Google Apps Script — Google Developers

共有の方法すらわかっていないので、コピペしてください。

   function main(){

     _sendStarredMailTo("ここにOmnifocusのMailDropのアドレス","ここに送信済みアイテム用のラベル名");

   }

   function _sendStarredMailTo(mailAddress,labelName) {

   var label = _getLabelWithName(labelName);

   var starredMails = GmailApp.search("is:starred -label:" + label.getName());

        for (var i = 0; i < starredMails.length; i++) {

          var messages = starredMails[i].getMessages();

          for (var k = 0; k < messages.length; k++) {

            if (messages[k].isStarred()){

              var mailSubject = messages[k].getSubject();
              var mailBody = messages[k].getBody();

              starredMails[i].addLabel(label);

              MailApp.sendEmail({
           to: mailAddress,
           subject: mailSubject,
           htmlBody: mailBody,
         }); 
            }
        }
      }
   }

   function _getLabelWithName(name){

    var label = GmailApp.getUserLabelByName(name);

              if (!label){
                label = GmailApp.createLabel(name);
              }

    return label;
   }

使い方は、main()をスクリプト画面から実行するだけです。

定期的に実行することも可能です。

トリガーという仕組みがあるようで、とりあえずタイマーをトリガーとして1分ごとに実行するようにしています。

上手く運用できると良いのですがいかがでしょう。
ラベルとメールアドレスの組み合わせを変更するとEvernoteへの投稿などにも応用できると思います。
あとでやってみます。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です