なっく日報

技術やら生活やらのメモ

Google Apps ScriptでGmailの下書きを作成する

きっかけ

qiita.com

をみて。

今までは

yukidarake.hateblo.jp

にあるようにChrome Extension + AlfredのSnippet機能でやってたけど、

自動化できそうと思い、ちょっと試してみた。

コード

stackoverflow.com

のStack Overflowのサイトほぼそのまま。

ScriptApp.getOAuthToken()でOAuthトークンがとれるから、Gmailの下書きを作るAPIを生で叩くというなかなかの力技。

function createDraft() {
  try {
    var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope

    var raw = 
      'Subject: test\n' + 
      'To: hoge@example.com\n' +
      'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\n' +
      'testing Draft msg\n' + 
      '--1234567890123456789012345678--\n';

    var draftBody = Utilities.base64Encode(raw);

    var params = {
      method: 'post',
      contentType: 'application/json',
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
      },
      muteHttpExceptions: true,
      payload:JSON.stringify({
        message: {
          raw: draftBody
        }
      })
    };

    var res = UrlFetchApp.fetch('https://www.googleapis.com/gmail/v1/users/me/drafts', params);
    Logger.log(res.getContentText());

  } catch(err) {
    Logger.log(err.lineNumber + ' - ' + err);
  }
}

上記のスクリプトをScript Editor上で実行すれば下書きは作成できました。

注意点

疑問

が、Gmailだとメニューを増やしたりもできないし、何をトリガーにすればよいのだろう?
1日1回実行とかは、なしではないけど、ここまで力技なら今までのやり方でよいかな・・・