Slackには、Gmail の転送機能がありますが、転送先のChannel のコントロールが細かく指定できません。
個人的に、Gmail フィルタでメールに付与したラベルごとに、転送先のチャンネルを切り替えることを実現したかったので、スプレッドシートの入力値を元に、Gmail を Slack 通知する Google Apps Script を作ってみました。

スプレッドシートをコピーすれば、使えるので、作成したものの使い方について記載します。
個人的に個人でも会社でも使用するのですが、環境構築が面倒だったりするので、claspのインストールなしでGoogle Apps Script のエディターにコピーアンドペーストして利用できるようにしています。
この記事では以下の3種類の方法と、使い方について説明します。

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

V2を作った

gas-Gmail2Slack旧方式のIncoming WebHooks を使っているので、新しくV2作成しました。

新方式のIncoming WebHooksを使って、Gmail をQuery指定して、Slack に通知する Google Apps Script を書いた | Monotalk使用方法をまとめていますので、何か旧方式のIncoming WebHooksを使う理由がなければ、V2を使ってください。


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

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

  • コピー元のスプレッドシート
    以下が、コピー元のスプレッドシートになります。
    gas-Gmail2Slack 初期設定設定シート作成実施済です。

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

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


Github リポジトリを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-Gmail2Slack.git <project_name>
    

  • nom install

    cd <project_name>
    npm install
    

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

    npm run setup 
    

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

    npm run deploy
    

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


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

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


使い方

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

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

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

  • Incoming Webhooks の有効化
    Slack の チャンネルに通知するには、Incoming Webhooks を使います。
    現状、旧方式のIncoming Webhooks と、新方式のImcoming Webhooks があり、このスプレッドシートは旧方式で動作します。
    旧方式の設定手順は、以下の記事が分かりやすかったです。
    SlackのIncoming Webhooksを使い倒す - Qiita

  • URL をスプレッドシート に設定する
    メニューの、gas-Gmail2Slack から 初期設定Webhook URL設定クリックします。
    Image from Gyazo
    ダイアログが表示されるので、払い出した Webhook のURLを設定します。
    Image from Gyazo

Config シートに通知対象の Gmail 情報と、通知先の Slack のチャンネルを入力する。

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

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

    • 入力例
      Google Search Console
  • Channel
    通知先のSlackのチャンネル名を記載します。# 始まりです。

    • 入力例

    gsc

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

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

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

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

スケジュール実行の設定

メニューの、gas-Gmail2Slack から 初期設定スケジュール実行クリックすると、ダイアログで実行スケジュールを設定可能です。
例えば、every hour選択すると1時間おきにSlackにメールが通知されます。
Image from Gyazo
Image from Gyazo


参考

以上です。

コメント