前提・実現したいこと
https://teratail.com/questions/204994
にてチャットワークから取り出したデータ(JSON)を読み取ることができるにはという質問をさせていただきました。
読み取ることはできたのですが、このデータをエクセルに落とし込みたいのです。
下記のコードを書きましたが、以下のエラーがでました。
daytimeの定義づけが違うとのこと、ネット等で検索してみたのですが解決策がみつからなく質問させていただきます。アドバイスをお願いいたします。
以下追記(21:24)
チャットワーク上のデータは以下のようになります。このデータが100個あります。
山田太郎(=name)
2019年8月10日 12:24(=daytime)
〇〇様 お疲れ様です。今日は暑いです。熱中症に気を付けて。では。(=body)
12454654654564564(=mid)
for i in jm以降はname、daytime、body、midのデータを取り出し、エクセルの1行にA列name、B列daytime、C列body、E列midを書き出し、データがあるまで書き続けて(100件)終わる設計を考えています。
発生している問題・エラーメッセージ
File "C:/Users/XXXXXXXX/タイトル無し0.py", line 41, in <module> for a in filter(lambda x:x != "",daytime): TypeError: 'datetime.datetime' object is not iterable
該当のソースコード
python
1 2import datetime 3import requests 4import json 5 6headers = {‘X-ChatWorkToken’:‘自分のAPIトークン’, } 7 8mes = requests.get('チャットワークのHttp(ルーム番号含む)',headers=headers) 9jm=json.loads(mes.text) 10 11 12import xlsxwriter 13wb = xlsxwriter.Workbook('C:/Users/XXXXXXXX/Desktop/out.xlsx') 14ws1 = wb.add_worksheet('sheet') 15 16i=0 17for i in jm: 18 name=i.get("account").get("name") 19 daytime=datetime.datetime.fromtimestamp(i.get("send_time")) 20 mid=i.get("message_id") 21 body=i.get("body") 22 print("\n--------------------------------------------") 23 print("{n}({i}):{d}\n{b}".format(n=name,i=mid,d=daytime,b=body)) 24 print("--------------------------------------------") 25 26 for a in filter(lambda x:x != "",name): 27 i=i+1 28 ws1.write(i, 0, a) 29 30 for a in filter(lambda x:x != "",mid): 31 i=i+1 32 ws1.write(i, 1, a) 33 34 for a in filter(lambda x:x != "",daytime): #別対応 35 i=i+1 36 ws1.write(i, 2, a) 37 38 for a in filter(lambda x:x != "",body): 39 i=i+1 40 ws1.write(i, 3, a) 41 42wb.close()
試したこと
該当するエラーを取り除いてプログラムを動かすと動くが、エクセルデータはたくさんあるデータのひとつしか書き出さない。
※while文を書いていないから?
エクセルのデータ上には一行ごとではなく、一つのセルに一文字だけ書き出される。
※while文がないから?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー