SlackのイベントAPIを使ってみる

SlackのイベントAPIを使って、特定のチャンネル内で送信されたメッセージをスプレッドシートに出力する方法を試してみます。

スプレッドシートの用意

まずはスプレッドシートからGASを作成して、以下のような内容にします。

const SHEET_NAME = 'シート1';

function doPost(e) {
  const data = JSON.parse(e.postData.contents);

  // SlackのURL検証用(初回のみ)
  if (data.type === 'url_verification') {
    return ContentService.createTextOutput(data.challenge);
  }

  const event = data.event;

  // ユーザーの新規投稿のみを対象
  if (event.subtype) {
    return ContentService.createTextOutput('no');
  }

  const sheet = SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheetByName(SHEET_NAME);

  sheet.appendRow([
    event.channel || '',
    event.text || '',
    event.user || '',
    event.ts,
    JSON.stringify(event)
  ]);

  return ContentService.createTextOutput('ok');
}

Slack側から受け取ったデータを確認して、スプシに書き込む想定です。
6-9行目はSlack側にURLを設定した際に初回だけ行う処理で、以下のようなjson形式を受け取るのでchallengeの値を返す必要があります。

{
    "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
    "challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
    "type": "url_verification"
}

これでコードの準備が完了したので、GASをウェブアプリとしてデプロイします。
右上のデプロイ > 新しいデプロイ を選択します。

左上の 歯車アイコン > ウェブアプリ を選択します。

アクセスできるユーザーを全員に変更して、デプロイを行います。

デプロイ完了後、ウェブアプリのURLをコピーしておきます。

Slackの設定

次にSlackでの設定です。
Slackにログイン後、Slackアプリの管理画面に移動して、Create New Appをクリックします。

アプリの作成方法で、From scratchを選択します。

アプリ名とワークスペースの選択を行い、Create Appをクリックします。

これでアプリを作成できました。
次にサイドメニューから Features > OAuth & Permissions を選択します。

Scopes の Bot Token Scopes で Add an OAuth Scope を選択します。

今回は「channels:history」のスコープを追加したいので、下部に入力して検索します。

スコープを追加できました。

次にサイドメニューの Features > Event Subscriptions を選択します。

Enable EventsをOnにします。

下に表示されるRequest URLに、先ほどのウェブアプリのURLを貼り付けます。

前述のGASのコードで記載しましたが、張り付けたURLが問題ないかの検証が行われ、問題なければVerifiedが表示されます。

さらに下にあるSubscribe to Bot Events を選択します。

イベントの追加が行えるので、message.channelsを追加します。

message.channels が追加できました。

最後に作成したアプリをワークスペースに追加して、イベントを設定したいチャンネルに招待します。

/invite @XXXXXXXX

チャンネルでメッセージを送信すると、スプレッドシートに出力されることを確認できました。

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2026年2月
1234567
891011121314
15161718192021
22232425262728