3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メールアドレスで簡単メンション!Webhook開始の使い方

Posted at

1. はじめに

近頃自分は社内向けのSlackアプリやワークフローを作成する機会が多かったのですが、以下のような場合はSlackAPIを用いるのよりもワークフローのWebhook開始が手軽で良いということが分かりました。

  • メールアドレスだけが分かっている状態でメンションを送りたい
  • メッセージに複雑な機能を付与しない

スプレッドシートにてメールアドレスで人を管理している、といったシチュエーションにぴったりです。

2. Slack APIのデメリット

現状のSlack APIではメールアドレスのみを指定してメンション付きメッセージを送信する機能はありません。
私の知る限りでは下記の2step踏む必要があります。

  1. users.lookupByEmailでユーザーIDを取得する
  2. 文面を作成しchat.postMessageでメッセージを送る

しかしこれは正直なところ面倒なものです。

  • 送りたいメッセージ数が多いとレート制限に引っかかりやすい
  • 最初からSlackユーザーIDで人を管理していることなんてない
  • エラー処理が大変…

3. Webhook開始の使い方

Slackワークフローを作成し「Webhookを使って開始する」を選択すれば、任意のデータ変数のデータタイプを「Slackユーザーのメールアドレス」として指定して送るだけですみます。

スクリーンショット 2024-06-11 105803.png

以下はこれに対応するGASの例になります。

const SLACK_WORKFLOW_URL = "https://hooks.slack.com/triggers/から始まるURL"

const options = {
    method: "post",
    muteHttpExceptions: true,
    contentType: "application/json; charset=utf-8",
    payload: JSON.stringify({
        email: "example@email.com"
    }),
};

await UrlFetchApp.fetch(SLACK_WORKFLOW_URL, options)

return;

4. Webhook開始のメリット

送ったメールアドレスをユーザーIDや表示名に自動変換してくれるワークフローの便利機能が使えます!!!
スクリーンショット 2024-06-11 105849.png

ワークフローの範囲でできるボタンの設置や他サービスとの連携であれば、機能追加も気軽です。

5. まとめ

ついつい自由度の高いSlack APIに頼りがちですが、ワークフローの方が適している場面もあると今回知ることができたので記事にしました。

既に知っている人も多い内容だったかもしれませんが、自分と同じ初心者エンジニアの方の助けになれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?