Google Places APIを利用して取得したJSON形式の詳細データをjqでCSVに変換

jq の使い方の練習。

入力データ

$ cut -d, -f1 placeidlist.txt
ChIJNQ2aK4qcnl8RNtkWQx4khv0
ChIJfbgigwxTnl8RV1nqTBsMubU

コマンド

$ cut -d, -f1 placeidlist.txt | while read line; do curl -s "https://maps.googleapis.com/maps/api/place/details/json?placeid=$line&key=AIzaSyCjWoePA78KgDV4RETSsJu-jLw2Hh1J2v8&language=ja" | jq -r '[.result | select( .address_components != null) | (.address_components[] | select(.types[] | contains("postal_code")) | .long_name), .formatted_address, .formatted_phone_number, .international_phone_number, (.geometry.location | .lat, .lng), .id, .place_id, .name, .rating  ] | @csv'; sleep 1; done
"039-4601","日本, 〒039-4601 青森県下北郡大間町大字大間大間平","0175-37-2111","+81 175-37-2111",41.5456452,140.9135135,"607050565bc1802df9df730fa7b616a9830340b8","ChIJNQ2aK4qcnl8RNtkWQx4khv0","大間崎テントサイト",4.3
"041-1351","日本, 〒041-1351 北海道亀田郡七飯町東大沼","0138-67-3477","+81 138-67-3477",42.0132556,140.7153869,"83bad63c2821d5b7e73c45285663b6a3b82c9f58","ChIJfbgigwxTnl8RV1nqTBsMubU","東大沼キャンプ場",4
  • 特定のフィールド.address_componentsを持つオブジェクトを選択。
  • select と containsでキーワードpostal_codeを含むオブジェクトを選択。
  • ()を使用してフィルタの範囲を制限
  •  jq -r '[]' と @csv を使用してJSONをCSVに変換。