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

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

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

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

Q&A

0回答

818閲覧

slack apiから全チャンネルの発言の一覧を取得したい

YutaIkedo

総合スコア9

Python

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

0グッド

0クリップ

投稿2021/06/27 17:30

python初学者です。
slack apiを利用して、channel一覧と取得したchannel内で行われた発言の一覧を取得する仕組みを作りたいと考えております。
(最終的にはユーザー一覧と合わせて、誰が何件発言したのかを記録できるようになりたい)

最終目標は上記ですが、勉強のためにやっているので、定期実行などは後から考えたいと考えています。

利用環境
  • OS:m1 chip macbook air
  • python:pyton3系(google colaboratory)
やりたいこと
  1. conversations.listからチャンネルの一覧を取得する
  2. 1で取得したチャンネルのidを引数として発言数を取得する関数に渡して発言一覧を取得する
  3. 2の処理をforとかでchannel_idを次々に渡すことで、全チャンネルの発言一覧を取得する
  4. 3で処理したものを一つのデータフレームにまとめるor3の処理1回終わるごとにspreadsheetなどに記録する
  5. usersの一覧を別途で取得しておき、取得した発言数から誰が何回発言しているのかを明らかにする
出来なかったこと
  • 1で得たidを引数として2に渡すところ
  • 3の連続で処理する際に何故か同じデータフレームが何度も出来てしまう
  • 4で一つのデータフレームにまとめること
自分でやってみたこと
  • channelsのidの取得
def get_channels_list(): url = 'https://slack.com/api/conversations.list' headers = {'Authorization' : 'Bearer '+ YOUR_TOKEN_OAUTH} request_channels = requests.get(url ,headers = headers) res_c = json.dumps(request_channels.json()) json_data_c = json.loads(res_c) json_list_c = json_data_c['channels'] channel_id = json_normalize(json_list_c) return channel_id['id']
  • coversations(特定チャンネルにおける)発言の取得
def get_conversations(k): url = "https://slack.com/api/conversations.history" header={ "Authorization": "Bearer {}".format(YOUR_TOKEN_OAUTH) } payload = { "channel": k } response = requests.get(url, headers=header, params=payload) res_m = json.dumps(response.json()) json_data = json.loads(res_m) json_list = json_data['messages'] messages = json_normalize(json_list) return messages
お願いしたいこと
  • 以下のいずれかのような回答をいただけると幸いです。
  • 解決方法
  • 実現したいことをやるために理解すべきことがまとまっているようなサイト
  • 特にidを引数としてfor文を使って渡す方法
  • 連続で作ったデータフレームを一つにまとめる方法

学習が足りないことは重々承知なのですが、やってみたいと思って始めてみたのはいいのですが、初学者向けのpythonの学習教材を何度も復習してもうまく応用ができない状況です。
もしよければご教示くださいますと大変幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問