Slack の関連ページ(ブックマーク)を操作できる Bookmarks API を触ってみた

Slack の関連ページ(ブックマーク)を操作できる Bookmarks API の使い方をご紹介します。
2022.07.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、サービスグロースチームの筧です。

皆さんは、Slack の関連ページ(ブックマーク)機能を使っていますか? 各チャンネルの上部にある「+関連するページを追加する」ボタンから、ブラウザのブックマーク機能のように特定 URL を設定できる機能です。 チャンネルに参加するメンバーがよく使う URL を設定しておくと大変便利です。

メッセージと関連ページのリンクをピン留めする | Slack

少し前に以下のブログを書いた際は、関連ページ(ブックマーク)機能を操作する Slack API は用意されていませんでした。

Google Apps Script で緊急対応時の Slack 操作を自動化してみた | DevelopersIO

しかし、最近 Slack API のドキュメントを眺めていたところ、2022年3月頃に追加されていたことを発見しました。 せっかくなので、今回は当該 API を触ってみようと思います。

Bookmarks API | Slack

やってみた

ブログ執筆時点では以下のメソッドが公開されていました。

  • bookmarks.add
    • Add bookmark to a channel.
  • bookmarks.edit
    • Edit bookmark.
  • bookmarks.list
    • List bookmark for the channel.
  • bookmarks.remove
    • Remove bookmark from the channel.

今回は bookmarks.add メソッド を触ってみたいと思います。

bookmarks.add メソッド

チャンネルに関連ページ(ブックマーク)を追加するメソッドです。

bookmarks.add method | Slack

Facts に記載の Required scopes を確認すると、Bot tokens と User tokens のいずれでも bookmarks:write が必要とのことです。 どちらの tokens を利用するかは自由ですが、Slack アプリに予め当該スコープを設定ください。

Arguments の記載内容によれば、以下の引数は必須です。

Argumentsd | bookmarks.add method | Slack

  • token: Slack アプリの OAuth & Permissions に記載の OAuth Token(Bot か User かは自由)
  • channel_id: 関連ページ(ブックマーク)の追加先チャンネル
  • title: 登録する関連ページ(ブックマーク)の名前
  • type: 関連ページ(ブックマーク)のタイプ(※)

※ ブログ執筆時点は type に指定できるのは link のみでした。他の type も今後追加されるとのことです。

Note At this current moment, the Bookmarks API only accepts the link type. Acceptance of the remaining types coming soon!

Usage info | bookmarks.add method | Slack

手軽に Slack API の公式ページに用意されている Tester を使って試してみましょう。以下の URL にアクセスします。

Tester | bookmarks.add | Slackmethod

Arguments の記載内容で確認した引数を入力して、Test Method ボタンをクリックします。 成功すれば、Tester の API response で 「"ok": true」と表示されます。 対象チャンネルにアクセスすると、以下の通り関連ページ(ブックマーク)が追加できたことが確認できました!

参考までに Google App Script で実行する例を紹介します。 予め実行する Google App Script のプロパティに利用する Slack アプリの OAuth Token を登録しておきましょう。

プロパティ サービス  |  Apps Script  |  Google Developers

コード例は以下です。

// Google App Script のプロパティから Slack アプリの OAuth Token を読み込み
const props = PropertiesService.getScriptProperties();
const SLACK_TOKEN = props.getProperty("SLACK_TOKEN");

function addBookmarks(channelId, title, link) {
  //https://api.slack.com/methods/bookmarks.add
  let methodUrl = "https://slack.com/api/bookmarks.add";
  let payload = {
    token: SLACK_TOKEN,
    channel_id: channelId,
    title: title,
    type: "link",
    link: link,
  };
  let option = {
    method: "POST",
    payload: payload,
  };
  UrlFetchApp.fetch(methodUrl, option);
}

// 引数の値は仮です。公式ドキュメントの値を参照しています。
function testAddBookmarks() {
  try {
    addBookmarks("C03RL5D9Y6Q", "bookmark-1", "https://google.com");
  } catch (error) {
    Logger.log(error);
  }
}

おわりに

最後まで読んでいただきありがとうございます。

チャンネルに関連ページ(ブックマーク)を追加する API が公開されたことで、冒頭で紹介した緊急対応時の Slack 操作を自動化するツールも、パワーアップできそうです。 本ブログが皆さんにとって少しでも役に立っていると幸いです。

それではまた!