TwitterのAPIをGASで実行すると以下のようにログが1行の文字列として取得されてとても見にくい状態で表示されます。(※下記サンプル画像はライブラリを利用してAPIを実行しています)
このような状態だと、どのパラメータをどのように取ればいいのかわからないのでとても開発効率が悪いです…
今回はこのデータを見やすくする方法を紹介します。
TwitterのAPIの結果を見やすく整形する方法
方法はとてもシンプルです。
- APIの結果をJSON形式に変換する
- 整形ツールで整形する
で完了です。以下に詳しく説明していきます。
APIの結果をJSON形式に変換する
JSON.stringify(result)
でAPIの結果をJSON形式に変換します。
[{favorite_count=1.0, in_reply_to_status_id=null,.....}] ↓↓↓↓↓ JSON.stringify ↓↓↓↓↓ [{"created_at":"Sat Feb 13 14:11:07 +0000 2021",......}]
stringify をすると = で 繋がれた結果が : で繋がるようになり下記画像のようになります。
JSON整形ツールで見やすく変換する
どんなツールでもいいのですが、JSON整形ツールを使って改行やインデントが入った見やすい形式に変換します。
JSONきれい ~JSON整形ツール~
整形ツールを使用すると以下のような形に変換されます。
これを見ると、投稿した人の情報などは “user” というデータの中に含まれていることがわかります。
投稿した人の情報を取りたい場合は以下のような書き方をすると取ることが出来ます。
for (let i in result) { const tweet = result[i]; Logger.log(tweet.user.name); // 投稿者名 Logger.log(tweet.user.screen_name); // 投稿者の@名 }
このようにデータが上手く取れない場合はJSONを整形して見やすい形にしてからデータを取るようにしましょう。
注意点
多くのデータを解析しようとしない
Logging output too large. と書かれたログが出ている場合は、後半のログが省略されています。
取得したデータが多すぎて全ての結果が出力できずJSONの整形が出来ないパターンはよくあります。
この場合はオプションで取得する投稿の数を減らすことで全てのログが出るようにすることが出来ます。
JSON.stringify で変換した後のデータを利用しない
JSON.stringifyを実行したデータは『文字列』です。
文字列なので tweet.user.name のようにデータを参照することが出来ません。
この方法での変換はあくまでデータの把握のためのものなので、取得したデータを使いたい場合は変換前の変数を利用しましょう。
⭕ 正しい const result = client.getRequest(url); Logger.log(JSON.stringify(result)); // JSONに変換してログだけ出す for (let i in result) { const tweet = result[i]; Logger.log(tweet.user.name); // 投稿者名 } ❌ エラーになる const result = client.getRequest(url); const json = JSON.stringify(result); // JSONに変換したものを以降の処理でも利用 Logger.log(json); for (let i in json) { const tweet = result[i]; Logger.log(tweet.user.name); // 投稿者名 }
データは見やすく整形したほうが開発効率は上がる
今回はGASでのJSONの整形に触れましたが、SQLなども整形したほうが見やすくなることは多いです。
プログラミングと直接関係がない部分ですが、データの見やすさはバグ削減にも繋がり結果的に開発効率向上に繋がるので「ちょっと見にくいな」と感じたら整形ツールなどを調査してみると良いかもしれません。
ここまで読んで頂きありがとうございました!
コメント