Slackに投稿したメッセージを一定のキーワードで抽出したかったので、その方法を調べたのでメモ。jpから後ろは、CSV形式でダウンロードさせるためのコマンドです。
curl -s -G https://slack.com/api/search.messages \
-H "Authorization: Bearer xoxp-<USER_TOKEN>" \
--data-urlencode "query=キーワード" |
jq -r '.messages.matches[] | [.permalink, .text] | @tsv'
トークンを取る方法
Slack APIで必要なスコープを取得する流れをまとめます
1. どのスコープが必要か
-
search.messages を使う場合
-
User Token (xoxp-...) が必要
-
スコープ:
search:read -
Bot Token (xoxb-...) では利用できません
-
-
chat.getPermalink を使う場合
-
Bot Token / User Token どちらでも可
-
特別なスコープは不要(通常の
chat:writeなどがあればOK)
-
2. スコープを取得する手順
-
Slack API管理画面にアクセス
https://api.slack.com/apps にアクセスし、自分のワークスペースのアプリを作成するか既存アプリを選びます。 -
OAuth & Permissions を設定
-
Install App to Workspace
-
トークンを使う
3. ポイント・注意点
-
User Tokenは個人ユーザーにひもづくので、他ユーザーの検索も対象になります。
-
会社のSlackだと管理者の承認が必要な場合があります(特にUser Tokenを発行する時)。