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

こんにちは、ryohei(@ityryohei)です!

本記事では、Google Apps ScriptでJSONデータをスプレッド―シートに書き込む方法をご紹介しています。JSONデータをそのまま書き込むわけではなく、オブジェクト毎に行を分けてスプレッドシートに書き込む方法をとなります。

Google Apps ScriptでJSONデータをスプレッドシートに書き込みたいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

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

Google Apps Script(以下GAS)でJSONデータをスプレッドシートに書き込む全体のスクリプトは下記の通りです。

function myFunction() {

  const spreadsheetId = 'SPREADSHEET_ID';
  const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  const sheet = spreadsheet.getSheetByName("シート名");

  const json = [
    {
      'username': '田中太郎',
      'email': 'tanaka@example.jp',
      'tel': '0120123456'
    },
    {
      'username': '山田太郎',
      'email': 'yamada@example.jp',
      'tel': '0120789123'
    },
  ];

  json.forEach((obj)=>{
    let lastRow = sheet.getLastRow()+1;
    Object.keys(obj).forEach((key, index)=>{
        sheet.getRange(lastRow, index+1).setValue(obj[key]);
    });
  });
}

処理の流れは次のようになっています。

  • スプレッドシートを取得する
  • JSONデータを取得する
  • JSONデータを繰り返し処理する
  • JSONデータをスプレッドシートに書き込む

全体のスクリプトではわかりにくい部分があると思いますので、要所でまとめて処理内容を詳しく解説していきます。

スプレッドシートを取得する

Google Apps Scriptでスプレッドシートを取得します。スプレッドシートの取得方法には複数選択肢がありますが、ここではIDを使ってスプレッドシートを取得しています。

//スプレッドシートID
const spreadsheetId = 'SPREADSHEET_ID';
//スプレッドシートを取得する
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
//スプレッドシートから対象のシートを取得する
const sheet = spreadsheet.getSheetByName("シート名");

getSheetByName()の引数に指定しているシート名は、実際のシート名(デフォルトでは「シート1」)を指定してください。

参考:SpreadsheetApp openById();

JSONデータを取得する

JSONデータを取得します。JSONデータは基本的に外部から取得することになると思いますが、ここではファイル内で定義した簡単なJSONデータを使用します。実際にはAPIを叩いた結果等に差し替えて利用することになると思います。

//JSONデータ
const json = [
  {
    'username': '田中太郎',
    'email': 'tanaka@example.jp',
    'tel': '0120123456'
  },
  {
    'username': '山田太郎',
    'email': 'yamada@example.jp',
    'tel': '0120789123'
   },
];

JSONデータを繰り返し処理する

JSONデータを繰り返し処理でオブジェクトに分けて処理します。JSONデータ内のオブジェクトの中身が増減しても対応できるように繰り返し処理を使って処理します。

//JSONデータ繰り返し処理
json.forEach((obj)=>{

  //JSONデータのオブジェクトのキーを取得して繰り返し処理
  Object.keys(obj).forEach((key, index)=>{
      //add script    
  });

});

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

JSONデータをスプレッドシートに書き込みます。シートの最終行を取得し、最終行の次の行にJSONデータのオブジェクトの内容を書き込みます。データの書き込み後、繰り返し処理が終わるまで隣のカラムに移動するように処理します。

//JSONデータ繰り返し処理
json.forEach((obj)=>{

  //シートの最終行取得
  let lastRow = sheet.getLastRow()+1;

  //JSONオブジェクトのキーを取得して繰り返し処理
  Object.keys(obj).forEach((key, index)=>{

    //列を隣に移動してセルに値を書き込む
    sheet.getRange(lastRow, index+1).setValue(obj[key]);

  });

});

スクリプトを実行すると、スプレッドシートに下記のデータが書き込まれます。

田中太郎 tanaka@example.jp 0120123456
山田太郎 yamada@example.jp 0120789123

これでJSONデータをスプレッドシートに書き込むことができました。

最後に

Google Apps Scriptをスプレッドシートを組み合わせることで、JSONのような構造化データを視覚的に見やすい形式にすることが可能となります。JSONだけではなくCSVでもできますので、今度はCSVを使用したスクリプトについてもご紹介できればと思います。

以上、Google Apps ScriptでJSONデータをスプレッドシートに書き込む方法のご紹介でした!

おすすめの書籍

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。