【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法

post

photo credit: RaSeLaSeD – Il Pinguino C’è posta per te – A letter for you via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしております。

前回の記事はこちら。

【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhooksの最初の一歩
初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしています。今回は、Slackにメッセージを投稿するIncoming Webhookの最初の一歩について解説します。

Incoming WebhooksでSlackアプリにWebhook URLを追加する方法をお伝えしました。

これで、リクエスト先のURLが決まりましたので、後はGASを使ってそこにリクエストを送るだけ…

今回は、SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法です。

では、行ってみましょう!

スポンサーリンク

HTTPリクエストとは

そもそもHTTPリクエストとは何か、から説明しましょう。

例えば、私たちがブラウザでWebページを閲覧するときに、その目的のページのURLをアドレスバーに入力してEnterしますね。

すると、ブラウザがそのWebページを持っているWebサーバーに「このページのデータをください」とお願いをします。

これがHTTPリクエストです。

リクエストを受け取ったWebサーバーは、Webページのデータをブラウザに返します。

これをHTTPレスポンスといいます。

  • HTTPリクエストを送る
  • HTTPレスポンスを受け取って取り出す

この二つの処理を行う機能が、GASでも用意されているということですね。

HTTP通信については以下の記事により詳しく書いていますので、ご参考くださいませ。

【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
Google Apps Script初心者向けの題材としてBotの作り方シリーズです。今回はChatwork APIを活用するために必要な知識として、Web API、HTTP通信、UrlFetchサービスについてです。

Webhook URLへのリクエストの方法

Webhook URLへのリクエストの方法を確認するために、Slack APIの「Your Apps」のページを開きましょう。

Slack API: Applications | Slack

ここで、これまで作成した「天気予報さん」を選択し、「Incoming Webhooks」を開きます。

そこに、Slackアプリに追加したWebhook URLにリクエストを送るときのルールが記載されているので見てみましょう。

この部分です。

To dispatch messages with your webhook URL, send your message in JSON as the body of an application/json POST request.

Google翻訳サンにお手伝いいただいて、訳するとこんな感じになります。

WebhookのURLを使ってメッセージを送信するには、メッセージを「application / json」 POSTリクエストの本文としてJSONで送信します。

わからない言葉いっぱい出てきますね。

参考にcurlコマンドもありましたので、見てみましょう。

curl -X POST -H ‘Content-type: application/json’ –data ‘{“text”:”Hello, World!”}’ https://hooks.slack.com/services/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

curlコマンドとは、LinuxのコマンドでWebサーバーへデータ転送するものです。これと同じ命令をGASで実現できれば良いということになります。

GASでHTTPリクエストを行うUrlFetchメソッド

GASでHTTPリクエストを行うのは、UrlFetchAppクラスのfetchメソッドです。

書式はこちらです。

UrlFetchApp.fetch(url, params)

ここで、引数urlはWebhook URLですね。文字列で指定します。

引数paramsには、必要なパラメータを含むオブジェクトで渡します。

関係あるパラメータを以下にまとめますね。

パラメータ名 データ型 説明 指定する内容
contentType 文字列 送るコンテンツの種類 ‘application/json’
method 文字列 HTTPメソッド ‘post’
payload 文字列 ペイロード=POSTリクエストで送る本体 ‘{“text”:”Hello, World!”}”

…おや、なんとなく先ほどのWebhook URLの説明やcurlコマンドの内容が網羅された気もしなくないですね。

ちなみに、Incoming Webhooksによるメッセージ投稿の場合、パラメータcontentTypeおよびmethodの指定する内容は常に固定なので、引数urlとパラメータpayloadだけ気にすればOKです。意外と簡単なのです。

GASからSlackアプリのWebhook URLにリクエストする

では、SlackアプリのWebhook URLにリクエストするGASのスクリプトを紹介します。

こちらです。

function test() {
  var url = '*****Webhook URL*****'; //皆さんのWebhook URLを入力ください
  var params = {
    method: 'post',
    contentType: 'application/json',
    payload: '{"text":"Hello, World!"}'
  };
 
  UrlFetchApp.fetch(url, params);
}

先ほどの表の通りにパラメータを指定してあげればOKですね。

Webhook URLは皆さんが取得したURLを指定してください。

Slackへの投稿を確認する

ではSlackへの投稿を確認しましょう。

スクリプトエディタで上記スクリプトを入力、実行します。

すると、初回は以下のように「承認が必要です」というダイアログが開きます。

「許可を確認」からいくつかのウィンドウが開いて「許可」の作業を進めてください。

GASのスクリプト実行時の許可

特に、無料のgmailアカウントを使っている場合は、「このアプリは確認されていません」という危険っぽいウィンドウが出てくるので、びっくりせずに以下の記事を参考に進めてください。

【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
超初心者向けGoogle Apps Scriptを学ぶシリーズ、Botの作成を目指しております。実行時に「承認してください」とスクリプトからのアクセス許可が求められる件について、詳しく解説していきます。

許可の手順が完了すると、Slackの指定したワークスペースのチャンネルに以下のようなメッセージが送られているはずです。

GASからSlackに送信したメッセージ

バッチリですね!

まとめ

以上、SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法をお伝えしました。

HTTPリクエストの仕組み、また、GASからWebhook URLへHTTPリクエストを送るためのfetchメソッドの使い方について確認しました。

難しそうに見えますが、メッセージ投稿の場合、fetchメソッドのパラメータは固定のものも多いので、それほどでもありません。

さて、次回は固定メッセージではなくて、天気予報の結果についてメッセージを送れるようにしていきます。

【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法
初心者ノンプログラマー向けに「GASを使ってSlackにメッセージを送る」を目標にお送りしております。今回は、天気予報API「Weather Hacks」のレスポンスをオブジェクトに変換する方法を紹介します。

どうぞお楽しみに!

連載目次:はじめてのSlackアプリでメッセージを投稿する

ビジネスチャットツールSlack、使ってますか?「Slackアプリ」を使うことでGASを通じてメッセージを投稿をすることができます。このシリーズでは初心者向けにSlackアプリの作り方を解説していきます。
  1. 【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう
  2. 【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhookの最初の一歩
  3. 【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法
  4. 【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法
  5. GASで天気予報API Weather HacksのJSONデータから欲しいデータを取得する方法
  6. GASとSlackアプリでSlackに今日の天気予報メッセージを送信する方法
タイトルとURLをコピーしました