【初心者向け】GASでJSONをスプレッドシートに書き込む方法

GASでJSONデータをスプレッドシートに書き込みたいんだけど、どうやってやればいいんだろう…難しそうだなぁ。
猫男
猫男
catman
catman
安心するんだ、GASガイドのcatmanが登場さ。JSONデータをスプレッドシートに書き込む方法を一緒に見ていこう。

 

GASで出てくる「JSON」とは何もの?

JSON(JavaScript Object Notation)は、データを保存しやすく、送受信しやすいテキストベースのフォーマットだ。

GASでもJSONデータを扱う場面はよくあるよな。

JSONの基本的な書き方

JSONは「キー」と「値」のペアでデータを表現する。


{
  "name": "タロウ",
  "age": 25,
  "city": "Tokyo"
}

このように、オブジェクト風にデータをまとめるんだ。

なぜJSONをGASで使うのか

GASでは、GoogleスプレッドシートでJSON形式のデータを利用することが多い。

たとえば、APIや外部データを取り込むシチュエーションで大活躍。

その理由は、データの構造がシンプルで変換や処理がしやすいからだ。

 

GASでJSONデータをスプレッドシートに書き込む方法

GASを使えば、JSONデータをスプレッドシートに書き込むプロセス、超スムーズさ。

GASでスプレッドシートにアクセス

まずはスプレッドシートを開き、そのシートにアクセスしよう。


function openSpreadsheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  return sheet;
}

SpreadsheetApp.getActiveSpreadsheet()で現在のスプレッドシートを取得し、getActiveSheet()でアクティブなシートを取得している。

JSONデータを書き込む

いよいよJSONデータを書き込む方法だ。


function writeJsonToSheet() {
  var sheet = openSpreadsheet();
  var jsonData = [
    {"name": "タロウ", "age": 25, "city": "Tokyo"},
    {"name": "ジロー", "age": 30, "city": "Osaka"}
  ];
  
  for (var i = 0; i < jsonData.length; i++) {
    sheet.appendRow([jsonData[i].name, jsonData[i].age, jsonData[i].city]);
  }
}

JSONデータの各オブジェクトからキーで値を取り出し、appendRow()メソッドでスプレッドシートに書き込んでいる。

うまくいけば、次のようにJSONデータがスプレッドシートに出力されるはずさ。

gas json

 

なるほど、これでJSONデータを簡単にスプレッドシートへ書けるようになった気がします!ありがとうございます、catman。
猫男
猫男
catman
catman
うむ、この調子でどんどん挑戦してみよう。

 

GASでJSONをスプレッドシートに書き込む練習問題

以下のJSONデータをスプレッドシートに書き込んでみてほしい。


[
  {"product": "ノート", "price": 200, "quantity": 3},
  {"product": "ペン", "price": 100, "quantity": 10}
]

スプレッドシートには、各オブジェクトのproduct、price、quantityを1行に書き込もう。

 

 

練習問題の解答・解説


function writeProductToSheet() {
  var sheet = openSpreadsheet();
  var jsonData = [
    {"product": "ノート", "price": 200, "quantity": 3},
    {"product": "ペン", "price": 100, "quantity": 10}
  ];
  
  for (var i = 0; i < jsonData.length; i++) {
    sheet.appendRow([jsonData[i].product, jsonData[i].price, jsonData[i].quantity]);
  }
}

forループを使って、product、price、quantityの各プロパティをappendRow()でスプレッドシートの新しい行として追加している。