SlackのプロフィールアイコンをSlack APIとGASを使って自動で更新する

Google Apps Script
この記事は約5分で読めます。
スポンサーリンク

やりたいこと

  • Slack APIの機能を使って、自分のプロフィールアイコンを更新する
  • GASから起動し、Googleドライブに格納している画像を使う
  • トリガーを設定し、定期的に自動でプロフィールアイコンを更新する

前提

  • Slackのプランはビジネスプラン以上
    ⇒うちはエンタープライズグリッドプランだったので、
     ビジネスプラスプランでの動作確認はしていないが、できるはず
  • このAPIで更新することができるのは自分のみ
    ⇒他人のプロフィールアイコンを更新したい場合は別のAPIを使用する。

事前準備

画像の用意
APIから画像を設定する場合、URLを使って画像へアクセスできるものを使用する必要がある。
また、Googleドライブに格納された画像ファイルを使用する場合、共有設定とURLの変換をする必要がある。
 画像の確認
 ・設定する画像に間違いがないか確認する。
 ・画像のサイズは縦、横ともに512ピクセル以上1024以下である必要がある。
  ⇒手動で更新するときはその場でトリミングできるが、APIから更新する場合は画像がそのままアイコンに適用されるため、正方形にしておいた方が良い。
  (横長、あるいは縦長だとアイコンで端に帯ができてしまう。)
 共有設定
 ・Googleドライブから、画像があるフォルダへアクセス
 ・ファイルの「共有」を選択
 ・一般的なアクセスを「制限付き」から「リンクを知っている全員」へ変更
  ※APIの仕様上、ファイルは公開されている必要があるため、
   セキュリティ面の課題を考慮してください。
 
 URLの変換
 ・Googleドライブのファイルから 共有>リンクをコピー をクリック
 ・この方法でコピーしたURLを以下のように変換する。
  https://drive.google.com/file/d/fileID/view?usp=drive_link
  ↓
  https://drive.google.com/uc?export=view&id=fileID

アプリの作成

 ・https://api.slack.com/apps/へアクセス
 ・Create New Appを押す
 ・From scratchを選択
 ・アプリ名とワークスペースを選択して「Create App」をクリック

Tokenの設定

 ・左側のメニューから「OAuth & Permissions」を選択
 ・ScopesのUser Token Scopesから以下を追加する。
  Add an OAuth Scopeを
  ・users.profile:read
  ・users.profile:write
  ・users:read
  ・users:write

アプリのインストール

「Install to "Workspace名"」をクリックしてアプリをワークスペースにインストール
「User OAuth Token」に表示されているUser Tokenを控えておく。

GASでスクリプトを作成

・Googleスプレッドシートを開く
・拡張機能>Apps Scriptをクリック
・以下のコードをコピー&ペーストする。

function updateSlackMyProfileImage() {
  const token = "ここにUser Tokenを入力する"; // 取得したSlackのAPIトークン
  const imageUrl = "ここに画像のURLを入力する";// 更新する画像のURLを入力
  const url = 'https://slack.com/api/users.setPhoto';
  const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob(); // 画像URLから画像データを取得
  const formData = {
    image: imageBlob,
    token: token
  };
  const options = {
    method: 'post',
    payload: formData
  };

  const response = UrlFetchApp.fetch(url, options);
  const result = JSON.parse(response.getContentText());

  if (result.ok) {
    Logger.log('プロフィール画像が更新されました');
  } else {
    Logger.log('エラー: ' + result.error);
  }}

・「保存」をクリックし、「実行」
 ※承認を求められた場合は承認する

プロフィールアイコンが更新される。

トリガーの設定

 もし定期的に、あるいは特定のタイミングで反映したい場合はトリガーを設定する。
 Apps Scriptの画面の左側から目覚まし時計のようなアイコンの「トリガー」をクリック
 画面右下の「トリガーを追加」
  実行する関数を選択:updateSlackMyProfileImage
  実行するデプロイを選択:Head
  イベントのソースを選択:適宜
  残りの項目は↑で選択した項目に応じて設定
  
 関数の方をいじって、毎日トリガー実行で違うアイコンが設定されるようにして遊ぶもよし。
 1年に1回画像を最新版に更新するなどの場合にも、
 画像を上書きしておけばトリガーで自動実行させて更新させることもできる。

もし動かない場合には

以下を確認してみてください。
 ・Slackの「アプリを追加する」から作成したアプリを追加しておく
 ・画像ファイルのサイズが512ピクセル以上1024ピクセル以下になっていることを確認
 ・Slackのプランの確認(ビジネスプラスプラン以上)
 ・Slackの自分に割り当てられた権限の確認(アプリ、APIが使用可能か)

コメントの通知/購読設定
受け取る通知
guest
0 Comments
古い順
新しい順 評価順
Inline Feedbacks
すべてのコメントを見る
タイトルとURLをコピーしました