以前、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 では以下のようなメール転送方法があります。
-
ワークスペース のメール転送機能を使う
Gmailに受信した特定メールのみをSlackに通知する方法 | RE:WORKSTYLE(リワークスタイル)
これを実施すると、ダイレクトメッセージとしてメール転送が行えるようです。
-
チャンネルごとにメールアドレスを発行し、送信する
無料版ではボタンが押せなかったのですが、チャンネルごとにメールアドレスを発行することができるようになりました。これは、スタンダードプラン以上で使用できる機能なのかもしれません。
-
Slackのメールアプリを使用する。
一度試したらクセになるメールをslackに転送する方法 - Qiitaスタンダードプラン以上での利用となりますが、メール転送用のアプリケーションがありこのアプリケーションでチャンネルごとにメールの転送ができます。
-
Zapierで連携する
一度試したらクセになるメールをslackに転送する方法 - Qiitaメールアプリの説明記事と同様ですが、この記事にZapierでの連携方法が記載されています。
IFTTTでの転送と似たようなことができます。
gas-Gmail2SlackV2の使い方
以下、ツールの使用方法について記載します。
個人的に個人でも会社でも使用するのですが、環境構築が面倒だったりするので、claspのインストールなしでGoogle Apps Script のエディターにコピーアンドペーストして利用できるようにしています。
この記事では以下の3種類の方法と、使い方について説明します。
- スプレッドシート をコピーして使用する方法
- Github リポジトリをCloneして、セルフビルドする方法
- ビルド済のリソースをコピーして使う方法
スプレッドシート をコピーして使用する方法
まず、スプレッドシート をコピーして使用する方法を記載します。
-
コピー元のスプレッドシート
以下が、コピー元のスプレッドシートになります。初期設定
の設定シート作成
は実施済です。 -
許可する必要のある権限
以下の権限がスクリプト実行に必要になります。 -
Slack への通知イメージ
設定後に以下のようなイメージのメッセージが通知されます。
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を取得、スプレッドシート に設定します。
- Incoming Webhooks の有効化
Slack の チャンネルに通知するには、Incoming Webhooks を使います。 現状、旧方式のIncoming Webhooks と、新方式のImcoming Webhooks があり、このスプレッドシートは新方式で動作します。 slackのIncoming webhookが新しくなっていたのでまとめてみた - Qiita
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にメールが通知されます。
説明は以上です。
slackのIncoming webhookが新しくなっていたのでまとめてみた - Qiita に記載されている、attachments からblocks への切り替えは実施していないので、そのうち変更したいです。
以上です。
コメント