以前、Gmail を Queryを指定して、Slack に通知する Google Apps Script を書いた | Monotalk で、旧方式のImcoming WebHooksでGmailをSlackに通知するコンテナバインドスクリプトを紹介しましたが、Slack App 版のImcoming WebHooks を使う形にスクリプトを修正しました。
少し使い方も変わっているので、改めて使い方などをまとめておきます。

作成するモチベーションとSlackでのメールの通知方法

何故GASでツールを作っているのかという部分とSlackでメールでの通知方法を記載します。

作成するモチベーション(Slackの無料版はメール転送の敷居が高い)

個人で無料版のSlack をニュースやメールマガジン などの情報収集に使っています。
元々IFTTTでメールをSlackへ転送していたのですが、廃止になったので、IFTTTの代替ツールとして作成しました。IFTTT以外に後述するメール転送方法があるのですが、無料版では使用できなかったり、無料枠だと利用に制限がかかるので、制限の緩いImcoming WebHooksを使い、スケジュール実行が簡単なGoogle Apps Script でツールを作るのがベターだと考えました。


Slackでのメール通知方法

Imcoming WebHooksを使う以外で、Slack では以下のようなメール転送方法があります。


gas-Gmail2SlackV2の使い方

以下、ツールの使用方法について記載します。

個人的に個人でも会社でも使用するのですが、環境構築が面倒だったりするので、claspのインストールなしでGoogle Apps Script のエディターにコピーアンドペーストして利用できるようにしています。

この記事では以下の3種類の方法と、使い方について説明します。

  • スプレッドシート をコピーして使用する方法
  • Github リポジトリをCloneして、セルフビルドする方法
  • ビルド済のリソースをコピーして使う方法

スプレッドシート をコピーして使用する方法

まず、スプレッドシート をコピーして使用する方法を記載します。

  • コピー元のスプレッドシート
    以下が、コピー元のスプレッドシートになります。

    gas-Gmail2SlackV2

    初期設定設定シート作成実施済です。

  • 許可する必要のある権限
    以下の権限がスクリプト実行に必要になります。

    https://i.gyazo.com/5a523311bac6245d1c331eee839e4134.png

  • Slack への通知イメージ
    設定後に以下のようなイメージのメッセージが通知されます。

    https://i.gyazo.com/ed8024c12fc0de94e7cbd9c39444dd28.png


    Github リポジトリをCloneして、セルフビルドする方法

    kemsakurai/gas-Gmail2SlackV2: Container binding script to notify Slack by Gmail label (using a new method, Incoming Webhooks).Clone してビルドする方法を説明します。

    clasp のインストール

    コンテナバインドスクリプトをデプロイするため、clasp をインストールする必要があります。 clasp のインストールは以下の記事が参考になるかと思います。

    GAS のGoogle謹製CLIツール clasp - Qiita

    • clasp のインストール

    npm i @google/clasp -g
    

    • clasp login

    clasp login    
    

    Git リポジトリをclone、新規でスプレッドシート を作成、Google Apps ScriptをビルドしてPushする。

    • git clone

    git clone https://github.com/kemsakurai/gas-Gmail2SlackV2.git <project_name>
    

    • npm install

    cd <project_name>
    npm install
    

    • スプレッドシート を新規作成 スプレッドシートを新規で作成する場合は、npm run setup実行します。 コマンド実行で、.clasp.json の初期化、スプレッドシート が作成されます。

    npm run setup 
    

    • コンテナバインドスクリプトをデプロイ

    npm run deploy
    

    これで、gas-Gmail2SlackV2いうメニューがスプレッドシート 上に作成されます。


    ビルド済のリソースをコピーして使う方法

    GSuite のセキュリティ設定で、公開スプレッドシート のコピーができない場合、且つ、ビルド、デプロイが面倒に感じるのであれば、gas-Gmail2SlackV2/dist at master · kemsakurai/gas-Gmail2SlackV2リソースをコンテナバインドスクリプトとしてコピーしても使うことができます。

    ディレクトリ配下の、appsscript.json、bundle.js、index.html でスクリプトエディタで、同名ファイルを作成して保存すれば、問題なく使用できます。


使い方

使用方法について説明します。

Incoming Webhooks を有効化、URLを取得、設定する

Incoming Webhooks の有効化して、URLを取得、スプレッドシート に設定します。

Config シートに通知対象の Gmail情報と、通知先の WebhookURLを入力する。

Configシートのカラムの内容を説明します。

  • Tag
    1行コメントを記載します。 Slackへはタグして通知されます。

    • 入力例 Google Search Console
  • Webhook URL
    通知先のSlackのチャンネルに対応するWebhook URLを入力します。

  • SendTo
    送信先のSlackのアカウントIDを入力します。

    • 入力例

      @UDJ6E61JL

  • Message body length
    メール本文の長さを記載します。タイトルのみ表示にしたい場合は、0入力するとタイトルのみにできます。

    • 入力例

      1000

  • Query
    Gmail の検索クエリを設定します。 Google Apps Script 側で Slack 送信したメールを既読にするので、is:unread付与するとSlackのチャンネルに通知していないメッセージのみ通知されます。Gmail で使用できる検索演算子 - Gmail ヘルプどんな検索演算子が使用可能かは記載されています。

    • 入力例 is:unread label:google-search-console

スケジュール実行の設定

メニューの、gas-Gmail2SlackV2 から 初期設定スケジュール実行クリックすると、ダイアログで実行スケジュールを設定可能です。

例えば、every hour選択すると1時間おきにSlackにメールが通知されます。

https://i.gyazo.com/d57a097334511b9396b71c83bfa42168.png

https://i.gyazo.com/2a21946bb5a96e2739d3883a7eac4b97.png

説明は以上です。

slackのIncoming webhookが新しくなっていたのでまとめてみた - Qiita記載されている、attachments からblocks への切り替えは実施していないので、そのうち変更したいです。
以上です。

コメント