hnwの日記

Gmailの新着メールをSlackに転送するGASを書いた

みなさん、Slack使ってますか?会社で使ってる人も多いでしょうし、サークルやコミュニティで使っているような人も多いと思います。ここ数年で一気に広がった感じがありますよね。

そうやってSlackに慣れてくるとSlackにさまざまな情報を集約したくなってきます。プログラマであればGitHub連携にはメリットを感じていると思いますし、エゴサ好きな人ならIFTTTでTwitter検索の結果をSlackに通知するなんていう使い方もあります1

そんなある日、私は特定のメールを無料プランのSlackに転送したくなりました。この機能はSlackの公式App「Email」で実現できるのですが、残念ながら有料プランでしか使えません。

さらに言うと、大昔は同じ機能をIFTTTで実現できたんですが、2019年にIFTTTのGmailトリガーが封じられてしまってIFTTTでは不可能になってしまいました2

そんな状況でしたので、GmailのメールをSlackに転送するGoogle Apps Script (GAS)を作ってみました。本稿ではこの概要と導入方法を紹介します。

概要

今回、GmailのメールをSlackに転送する仕組みをGASで実現しました。GitHubに公開してあります。

GASというのはGoogleが提供するスクリプト実行環境で、Googleアカウントを持っていれば誰でも使えます。Googleサービス(ドライブ文書やGmail・カレンダーなど)との親和性が高いので、これらを自動化する環境としては実質一択と言っても良いでしょう。完全無料なのも嬉しいところです。

また、GmailからSlackへの転送にはIncoming Webhookを使っています。これを使うにはSlackのアプリ追加権限が必要です。Slackワークスペースの管理ポリシー次第では使えないこともありますので、ご注意ください。

ちなみに、転送されたメールはSlack上で次のような見た目になります。

f:id:hnw:20200613124149p:plain
メールをSlackに転送したときの見た目

メールのSubjectと本文の先頭4行だけが表示されており、「Show more」を押すと全文が見えるようになっています。

導入の流れ

導入までのステップはざっくり言うと下記のようになります。

  1. Gmailアカウントを新規作成する
  2. 1のアカウントでGASをデプロイする
  3. Slackにメール転送役のbotユーザーを追加する
  4. 3のユーザーに紐付くIncoming WebhookのURLを発行してGASのプロパティに設定する
  5. 1のアカウントにメールを転送する
  6. GASの時間主導型トリガーで起動間隔を設定する(1分おきから1時間おきくらいが適当でしょう)

面倒に見えると思いますが、実際面倒ですね…。Gmailアカウントは既存のものを使うこともできるのですが、導入手順が更にややこしくなるのでオススメしません。

具体的な導入手順やカスタマイズ方法などはREADMEをご確認ください。

使ってみての感想

この仕組みを運用して6ヶ月ほど経ちましたが、自分の用途には問題なく使えています。

自作して良かった点は細かいカスタマイズをしやすいところですね。私の場合はメールの前に任意のテキストを追加したい(これを別のbot向けのコマンドとして利用したい)というニーズがあったり、他にも何点かやりたいことがあったので自作して良かったと思います。

とはいえ有料プランならSlack公式のEmailアプリを使わない手はないでしょう。EmailアプリはHTMLメールを同イメージでSlack上に再現してくれるのが素晴らしい点で、自作で真似しようと思うと結構面倒なんですよね…。


  1. 病むタイプの人にはオススメしません

  2. Office 365 Mailトリガーなら今でも使えます