ガスの urlfetchappで スラックAPIの 会話.リストで全てのチャンネルリストを取得する
11100 ワード
ガスプロジェクト作成
getslackchbynameと言うプロジェクト名で作成
スラックAPI公式 docからコピペ
API.スラック.コムの スラックAPI公式ドキュメントを読む
https://api.slack.com/messaging/retrieving#finding_conversation
このメッセージを見つけるコードは
const { WebClient, LogLevel } = require("@slack/web-api");
ガスが 国立天文台モジュールを使えないことにより断念チャンネルリストを 会話。リストで確認する
https://api.slack.com/methods/conversations.list
公式のここによれば
ゲットで
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と言う ガスの組み込み関数で フェッチする.アピア法は ゲット/ポストではなく、スラックの APIメソッドのこと.
スラックワークスペースのトークンと スラックAPIメソッドを引数で受け取るようにする.
const token = "xoxp-1234"
const apiResponse = callWebApi(token, "conversations.list");
これに スラックのトークンを入れて 会話.リスト の スラックAPIメソッドで呼ぶ.これを ガスで実行すると
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で取れた.デフォルトの ランダムと 全般自分で作った ボット作り
これらのチャンネル名と、チャンネル情報がとれた.
ボット作りの詳細を見ていく
"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,
チャンネル名、チャンネルかグループか、プライベートか、アーカイブされいているか、共有されているか、誰に作られたか、このリクエストのトークンの人間がこのチャンネルに入っているか、これらが確認できた.他のチャンネルも同じデータ構造.
今後
これでは各チャンネルの肝心のチャットの中身が見れないので
次は単一チャンネルの中身を取り出す スラックAPIメソッドを試す
メンバーリストや DMリストも試してみる.
スラックとは別に ドギーや Twitter APIなど他も試してみる
Reference
この問題について(ガスの urlfetchappで スラックAPIの 会話.リストで全てのチャンネルリストを取得する), 我々は、より多くの情報をここで見つけました 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