SlackなどのAPIからJSONデータを取得したあとそれをスプレッドシートに展開する場合、オブジェクトのkeyを一個ずつ指定して二次元配列を作ってシートに展開...みたいなことをやっていました。
しかし、いちいちkeyを指定してやるのが面倒だしコードも見やすくはないのでkeyを全てシートの1行目に展開、対応する値を行ごとにセットする方法を考えてみました。
- やりたいこと
- ネストされたJSONをテーブルにするため「フラット化」する
- 今回の肝になる flattenObj 関数
- SlackAPIのユーザ情報をスプレッドシートに展開してみる
- 各ステップの解説
- 配列内のObjectをフラット化
- 1つ目の配列のkeyをヘッダーとして定義
- headers をループして生成した配列を body 配列にまとめる
- headers と body を結合
- setValues
- あとがき
やりたいこと
画像左のSlackAPIで取得したユーザデータなどをスプレッドシート上にテーブルとして展開したい。
しかも もとのJSONのパターンに関わらず使い回せるように作っておきたい。

しかし、単純に配列をループしてObject.keysをループしても profile
以下のデータまでループする作りではないので以下画像のとおりオブジェクトのままセットされちゃいます。
えー、じゃあObjectの中のObject.keysもループしてさらに下の...うーん。

続きを読む