くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

GASを使ってGmailの内容をサーバに送る

受け取ったメールをサーバに送信してゴニョゴニョしたいなと思ったので、
調べてみたら、GAS(Google Apps Script)+Gmailで簡単にできたのでその備忘録。

流れとしてはこんな感じ。

  1. 定期的にGASを起動して、メールをチェック
  2. 未処理のメールがあったら、サーバへ送る
  3. 処理が終わったら、スターを付ける

GASのソースはこんな感じ

function sendPostCSV() {
  // 未処理(スターなし)のスレッドを検索
  var searchCondition = 'from:foo@example.com -is:starred';
  var threads = GmailApp.search(searchCondition, 0, 50);
  
  //スレッドからメールを取得し二次元配列に格納
  var messages = GmailApp.getMessagesForThreads(threads);
  
  // 検索結果の送信: ループ
  for(var i in messages){
    for(var j in messages[i]){
        var msg = messages[i][j];
        Logger.log(msg.getSubject());
        Logger.log(msg.getPlainBody());
        
        //サーバにメッセージを送信
        sendServer(msg.getPlainBody());
 
        //処理済みのメッセージをスターをつける
        msg.star(); 
    }
  }
}

function sendServer(strMessage){
  var options =
   {
     "method"  : "post",
     "payload" : {
       "data": strMessage
     }
   };
 
   var response = UrlFetchApp.fetch("https://server.example.com/post/mail/", options);
   var content = response.getContentText("UTF-8");
   Logger.log(content);
}

あとは、トリガーで定期実行させればOK。

f:id:wannabe-jellyfish:20200903165424p:plain

ログインできるアカウントのGmailであればこれでよさそう(´ω`)

検索時に指定できる演算子

公式ドキュメントはこのあたり
Gmail で使用できる検索演算子 - Gmail ヘルプ

あと、以下の記事がわかりやすかった

GASでのの通信処理

UrlFetchAppを使うといい感じ。

以下の記事もわかりやすかった

以上!!

参考にしたサイト様