SlackのAPIでチャンネルIDからチャンネル名を取得したいと思っています。
https://api.slack.com/methods/conversations.info
https://teratail.com/questions/364590
を参考に下記コードを作成したのですが、エラーメッセージが出てうまくいきません。
どのように修正したらよいでしょうか。
Bot tokensのスコープは、
channels:read
groups:read
im:read
mpim:read
を設定しています。(不要なものもあるかも知れません。)
よろしくお願いします。
GAS
1function testFunc(){ 2 console.log(getName("***")) 3} 4 5function getName(id) { 6 const url = "https://slack.com/api/conversations.info" 7 const token = "xoxb-***" 8 const param = { 9 "method": "get", 10 "contentType": "application/x-www-form-urlencoded", 11 "payload": { 12 "token": token, 13 "channel": id 14 } 15 } 16 const response = UrlFetchApp.fetch(url, param) 17 const json = JSON.parse(response) 18 const name = json.channels[0].name 19 return name 20} 21 22--- 23エラー 24TypeError: Cannot read properties of undefined (reading '0') 25getName @ 無題.gs:18 26testFunc @ 無題.gs:2
jsonは
ok: false
error: "channel_not_found"
となっています。
チャンネルIDはチャンネルの画面の「チャンネルID」からコピー&ペーストしています。
コードの修正箇所を示していただきありがとうございます。
const name = json.channel.name;
に修正しました。
しかし、
GAS
1エラー 2TypeError: Cannot read properties of undefined (reading '0') 3getName @ 無題.gs:18 4testFunc @ 無題.gs:2
は変わりませんでした。
User Token Scopesに
channels:read
groups:read
im:read
mpim:read
を設定して、tokenをBot User OAuth TokenからUser OAuth Tokenに設定変更するとチャンネル名を取得しました。Bot User OAuth Tokenで処理がうまくいかないのは、チャンネルIDで指定するチャンネルにボットを追加していないからかなと思いました。もしそうだとすると事前にボットを追加したチャンネルしかチャンネル名を取得できないことになります。

回答1件
あなたの回答
tips
プレビュー