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 など他も試してみる
Reference
이 문제에 관하여(GAS의 UrlFetchApp 및 Slack API의 conversations.list で全てのチャンネルlistを取得する), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/gas-no-urlfetchapp-de-slack-api-no-conversationslist-dequan-tenotiyannerurisutowoqu-de-suru-2l2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)