ワークフローを使ってGASからSlackへ通知を送る方法

# はじめに
この記事は「[Ateam LifeDesign Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ateam-life-design)」で完走賞を狙って25記事書いているうちの5日目の記事です。今年も完走目指して頑張るぞ！

# GASとSlackの連携
昨日はIncoming Webhookを使ってGASからSlackにメッセージを送信する方法についてまとめました。今日はワークフローを作ってそれをGASから呼び出すことで送信する方法についてまとめていきます。

# 作るもの
GASを実行するとSlackに通知するようにします。

# 準備
## ワークフローの作成
このワークフローを使った方法ではSlackに登録しているメールアドレスをGASから指定してそれをキーにしたメンションを送ることが出来るので単にメッセージを送るだけではなく、メールアドレスを指定することでメンションをする方法も併せて見ていきましょう。

Slackのアプリから「自動化」を選択。

![スクリーンショット 2023-11-24 20.52.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/84f46251-31fe-63bd-ee48-9b0847c9b669.png)

右上の「＋」をクリックすることで新規ワークフローの作成を開始します。

![スクリーンショット 2023-11-24 20.53.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/9b833da5-456a-0da9-0a74-62ea14d63d90.png)

今回は作ったワークフローをGASからWebhook呼び出しするので「Webhookから」を選択。

![スクリーンショット 2023-11-24 20.54.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/de4d953a-24b6-2c96-a23e-0e8c77886e7f.png)

ここからはメールアドレスを使ってメンションをするための設定です。「変数を設定する」をクリック。

![スクリーンショット 2023-11-24 20.54.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/b15de5c7-9df7-c0ca-1208-2a711fdd146c.png)

キーは任意の文字列で（今回は「email」）データタイプを「Slackユーザーのメールアドレス」とするのがポイント！

![スクリーンショット 2023-11-24 20.56.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/61e67dfa-59b4-bb3c-8e90-773e6b6fce38.png)

通知を送りたいチャンネルを選択肢送信するメッセージを記入します。メッセージを追加する際に「変数を挿入する」から先程設定した「email」を選択するとこれをメンションとして取り扱うことが出来ます。

![スクリーンショット 2023-11-24 21.12.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/28a7c03e-9d0a-816d-2246-b551ad39b6a0.png)

今回はこんな感じのメッセージにしました。

![スクリーンショット 2023-11-24 21.35.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/e2404feb-d88b-7261-f9ae-d3169a0a6a1f.png)

作ったワークフローの公開をしていきます。

![スクリーンショット 2023-11-24 21.36.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/28023282-8e3f-b056-7638-8e6d2911074c.png)

ワークフローに名前をつけて

![スクリーンショット 2023-11-24 21.37.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/0a8bb72c-af93-f746-13eb-9277a6631dfa.png)

共有設定を必要に応じて変更し「公開する」を選択します。

![スクリーンショット 2023-11-24 21.37.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/0e2e868e-000e-70c7-b77b-a08bf38fb199.png)

そして出来上がったWebhookのURLをコピーしておきます。

![スクリーンショット 2023-11-24 21.39.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/189f1f8e-6b1a-bdab-57ae-8bd8a8c82484.png)

## スクリプトプロパティにURLを登録する
昨日の記事と同様の手順で、上記で取得したURLをスクリプトプロパティに保存しておきます。

![スクリーンショット 2023-11-24 21.47.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/38e812e4-fbce-276f-85b8-179682132528.png)


# GASを書いていく

```javascript
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上の登録メールアドレスを指定することで、ワークフロー内でメンションに変更して送信することが出来ます。このコードの実行結果がこちら。

![スクリーンショット 2023-11-24 21.53.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/817103e4-ef61-6405-1959-b15fa61c4be6.png)

ちゃんとメールをキーとしてメンションが出来ていることが確認できますね。


# 最後に
今回はワークフローをつかってSlackにメッセージを送信する方法についてまとめました。昨日紹介したIncoming Webhookを使うパターンでもワークフローをWebhookとして呼び出すパターンでも比較的コードは少量でGASからSlackへの通知が送れることが確認できました。便利！

明日はGASとGoogleカレンダーの連携についてまとめていきます。