GAS의 UrlFetchApp 및 Slack API의 conversations.list で全てのチャンネルlistを取得する

11408 단어 javascriptgasslackapi

GAS 프로제크트작성





getSlackChByName と言うプロジェクト名で作成

Slack API 公式 Doc 에서 コピペ



api.slack.com の Slack API 公式ド큐먼트を読む

https://api.slack.com/messaging/retrieving#finding_conversation

이 멧세이지를 見つけるコードは

const { WebClient, LogLevel } = require("@slack/web-api");


GAS が npm モジュールを使えない ことにより断念

チャンネルlistを conversations.list で確認する



https://api.slack.com/methods/conversations.list

公式のここによれば

GET 로

https://slack.com/api/conversations.list

を叩けば手に入るらしい

API 리크에스트의 랩파를 導入する



https://qiita.com/seratch/items/2158cb0abed5b8e12809

この記事を参考に作る. 페이로드는 省略した.

function callWebApi(token, apiMethod) {
  const response = UrlFetchApp.fetch(
    `https://www.slack.com/api/${apiMethod}`,
    {
      method: "post",
      contentType: "application/x-www-form-urlencoded",
      headers: { "Authorization": `Bearer ${token}` },
    }
  );
  console.log(`Web API (${apiMethod}) response: ${response}`)
  return response;
}


UrlFetchApp 와 GAS の組み込み関数で fetch する.

apiMethod は GET/POST ではなく、Slack の API Method の こと.
Slack Workspace のトークンと Slack API Method を引数で受け取るようにする.

const token = "xoxp-1234"
const apiResponse = callWebApi(token, "conversations.list");


これに Slack のトークンを入れて conversations.list の Slack API 메서드 で呼ぶ.

これを GAS で実行すると

Web API (conversations.list) 
response: {
  "ok":true,"channels":[
  {"id":"C0385KDLRD5","name":"making-bot",... },
  {"id":"C038L782V3M","name":"random",... },
  {"id":"C038NHHFN3E","name":"general",...},
  "response_metadata":{"next_cursor":""},
}


레스폰스데체넬의 목록이 json으로 取れた.



데포르토노다무작위와 일반, 自分で作った making-bot,
これらのチャンネル名と、체넬情報がとれた.

making-bot の詳細を見ていく

"name":"making-bot",
"is_channel":true,
"is_group":false,
"is_im":false,
"is_mpim":false,
"is_private":false,
"created":1648155092,
"is_archived":false,
"is_general":false,
"unlinked":0,
"name_normalized":"making-bot",
"is_shared":false,
"is_org_shared":false,
"is_pending_ext_shared":false,
"pending_shared":[],
"parent_conversation":null,
"creator":"U038DHKP87Q",
"is_ext_shared":false,
"shared_team_ids":["T038NHHEJJY"],
"pending_connected_team_ids":[],
"is_member":true,


チャンネル名, チャンネルカグループ か, プライベート か, アーカイブされいているか, 共有されているか, 誰に作られたか, このリクエストのトークンの人間が この チャンネルに入ってきたががれら.

他のチャンネルも同じデータ構造.

今後



これでは各체넬の肝心のチャットの中身が見れないので
次は単一チャンネルの中身を取り出す Slack API 메솟드를 試す
menbar-list나 DM listも試してみる.

Slack とは別に DogAPI や Twitter API など他も試してみる

좋은 웹페이지 즐겨찾기