ネタ元
ascii.jp
どうせならVBAで処理したいと思って
宇宙一わかりやすい?VBA-JSONを使ったJSONパースのしかた - Qiita
この辺読んだがわからず。断念。
ネタ元のコードだとエラーが出る。
インデントがなんか気に食わないらしいので入力し直して、足りないパッケージ入れてもダメ。
dmConversationのmessagesにmessageCreateがあるの前提のコードなので
{ "messageCreate" : { "reactions" : [ ], "urls" : [ ], "text" : "はーい!\n楽しみにしてまーす!(o^^o)", "mediaUrls" : [ ], "senderId" : "XXX", "id" : "XXX", "createdAt" : "2017-07-07T05:20:26.586Z" } }, { "participantsLeave" : { //■■■ここでエラーが出ちゃう■■■ "userIds" : [ "XXX" ], "createdAt" : "2017-07-06T22:17:04.340Z" } },
ので、回避するようにしただけ。
# -*- coding: utf-8 -*- # エクセルを立ち上げておいてファイル読み込む import json import re import sys import io import codecs from dateutil.parser import parse from pytz import timezone # jasonファイルを開いて読み込む with codecs.open(r'ダウンロードしたデータのパス\data\direct-messages-group.js', 'r' , 'utf-8', 'ignore') as f: data = f.read() tw = json.loads(data[data.find('['):]) # 書き出すファイルを開く f = open(r'出力したいパス\direct-messages.tsv', 'wb') # 見たいデータを出力する for t in tw: for m in t['dmConversation']['messages']: try : s = m['messageCreate']['text'] c = parse(m['messageCreate']['createdAt']).astimezone(timezone('Asia/Tokyo')).strftime("%Y-%m-%d %H:%M:%S") s = s.replace("\n", " ") s = s.replace("\r", " ") s = "https://twitter.com/messages/"+t['dmConversation']['conversationId']+"\t"+c+"\t"+s+'\n' f.write(s.encode('utf-8')) except: continue f.close()
エクセルで見るときはファイル→開く→ファイルの種類を(*.*)に→direct-messages.tsvを開く
次へ
スペースにチェック入れて完了
検索もソートもガンガンできるぜ!!