質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

369閲覧

SlackAPIを使ったblock_idの抽出

wafa

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2022/09/19 06:18

前提

ここに質問の内容を詳しく書いてください。
SlackAPIを使ってblock_idを抽出するプログラムの作成中に以下のエラーが出ました。
TypeErorr: list indices must be integers or slices, not str

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • block_idの表示

発生している問題・エラーメッセージ

Traceback (most recent call last): File "D:\slack_bot\app.py", line 152, in <module> comentThread() File "D:\slack_bot\app.py", line 107, in comentThread print(i['bloks']['block_id']) TypeErorr: list indices must be integers or slices, not str

該当のソースコード

def commentThread(channel_id, ts): url = "https://slack.com/api/conversations.replies" header = { "Authorization": "Bearer {}".format(SLACK_BOT_TOKEN) } payload = { "channel" : channel_id, "ts" : ts } res = requests.get(url, headers = header, params = payload) json_data = res.json() messages = json_data['messages'] for i in messages: print(i['blocks']['block_id'])

試したこと

print文の中身をi['blocks']のみにして実行→blocksの中身が表示された

補足情報(FW/ツールのバージョンなど)

使用言語Python

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2022/09/19 06:33

json_data['messages'] の内容に依存すると思います。 json_data['messages'] のサンプルデータを質問に追記していただくことはできないでしょうか。
wafa

2022/09/19 06:46

取得できたものから一部のコメントのデータ(json_data['messages']の内容)を載せておきます。 { "client_msg_id": "e762ffe0-393e-41b3-af13-29756982c66a", "type": "message", "text": "書き込み集めたい", "user": "U03HEBTB9DZ", "ts": "1659274107.029069", "team": "T03HGP8BH60", "blocks": [ { "type": "rich_text", "block_id": "M+N", "elements": [ { "type": "rich_text_section", "elements": [ { "type": "text", "text": "書き込み集めたい" } ] } ] } ], "thread_ts": "1659274107.029069", "reply_count": 8, "reply_users_count": 1, "latest_reply": "1659274264.151869", "reply_users": [ "U03HEBTB9DZ" ], "is_locked": false, "subscribed": false }
guest

回答1

0

ベストアンサー

blocks 部分の構造が、

"blocks": [ { "type": "rich_text", "block_id": "M+N", "elements": [ { "type": "rich_text_section", "elements": [ { "type": "text", "text": "書き込み集めたい" } ] } ] } ]

であれば、JSON の配列 のように blocks の中は配列になっていますので、 i['blocks'][0]['block_id'] ではないでしょうか。

投稿2022/09/19 07:10

CHERRY

総合スコア25175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wafa

2022/09/19 07:33

回答いただいた通りに修正したところ、block_idの中身が表示されました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問