はじめに
この記事は「Ateam LifeDesign Advent Calendar 2023」で完走賞を狙って25記事書いているうちの5日目の記事です。今年も完走目指して頑張るぞ!
GASとSlackの連携
昨日はIncoming Webhookを使ってGASからSlackにメッセージを送信する方法についてまとめました。今日はワークフローを作ってそれをGASから呼び出すことで送信する方法についてまとめていきます。
作るもの
GASを実行するとSlackに通知するようにします。
準備
ワークフローの作成
このワークフローを使った方法ではSlackに登録しているメールアドレスをGASから指定してそれをキーにしたメンションを送ることが出来るので単にメッセージを送るだけではなく、メールアドレスを指定することでメンションをする方法も併せて見ていきましょう。
Slackのアプリから「自動化」を選択。
右上の「+」をクリックすることで新規ワークフローの作成を開始します。
今回は作ったワークフローをGASからWebhook呼び出しするので「Webhookから」を選択。
ここからはメールアドレスを使ってメンションをするための設定です。「変数を設定する」をクリック。
キーは任意の文字列で(今回は「email」)データタイプを「Slackユーザーのメールアドレス」とするのがポイント!
通知を送りたいチャンネルを選択肢送信するメッセージを記入します。メッセージを追加する際に「変数を挿入する」から先程設定した「email」を選択するとこれをメンションとして取り扱うことが出来ます。
今回はこんな感じのメッセージにしました。
作ったワークフローの公開をしていきます。
ワークフローに名前をつけて
共有設定を必要に応じて変更し「公開する」を選択します。
そして出来上がったWebhookのURLをコピーしておきます。
スクリプトプロパティにURLを登録する
昨日の記事と同様の手順で、上記で取得したURLをスクリプトプロパティに保存しておきます。
GASを書いていく
function myFunction() {
const url = PropertiesService.getScriptProperties().getProperty("TEST_URL");
const params = {
email: 'hoge@example.com' // メンション先アカウントの登録メールアドレス
};
const options = {
method: 'POST',
headers: { 'Content-type': 'application/json' },
payload: JSON.stringify(params),
};
UrlFetchApp.fetch(url, options);
}
こうしてやることでwebhookを使って登録されたワークフローを起動させることが出来ます。またemailでパラメータとしてメンションしたいアカウントのSlack上の登録メールアドレスを指定することで、ワークフロー内でメンションに変更して送信することが出来ます。このコードの実行結果がこちら。
ちゃんとメールをキーとしてメンションが出来ていることが確認できますね。
最後に
今回はワークフローをつかってSlackにメッセージを送信する方法についてまとめました。昨日紹介したIncoming Webhookを使うパターンでもワークフローをWebhookとして呼び出すパターンでも比較的コードは少量でGASからSlackへの通知が送れることが確認できました。便利!
明日はGASとGoogleカレンダーの連携についてまとめていきます。