2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】JSONをZIPで固めてGoogleDriveに保存する方法

Last updated at Posted at 2020-05-01

GASでスプレッドシートから複数のJSONを生成し、ZIPで固めてダウンロードしたいと思ったけど意外とめんどくさかったのでまとめます。

JSONを作成する

次のようなスプレッドシートの表から

no name age
01 mako 18
02 neko 19

各行に対して、次のようなJSONを作成する

{
 "no": "1",
 "name": "mako",
 "age": "18"
}
// スプレッドシートを読み込み
const sheet = SpreadsheetApp.getActiveSheet();
// データが存在する行までループする
for (let i = 2; i <= sheet.getLastRow(); i++) {
  const data = {
    "no": sheet.getRange(i, 1).getValue(),
    "name": sheet.getRange(i, 2).getValue(),
    "age": sheet.getRange(i, 3).getValue(),
  };
  console.log(JSON.stringify(data));
}

ZIPファイルを作成する

Utilities.zip関数を利用する必要があります。

const zip = Utilities.zip(blobs, 'hoge.zip');

第一引数にはblobsを取るので、jsonをblobに変換しその配列を取得します。
blobを生成するにはUtilities.newBlob関数を利用します。

const blobs = new Array();
const blob = Utilities.newBlob(JSON.stringify(data, null, 4), 'application/json', (i-1).toString() + '.json');
blobs.push(blob);

ZIPファイルを保存する

GASから直接ダウンロードができないので、一旦Google Drive上にZIPファイルを保存します。

const folder = DriveApp.getFolderById('FolderId');
folder.createFile(zip);

ここまでの全体のコード

function toJsons() {
  // スプレッドシートを読み込み
  const sheet = SpreadsheetApp.getActiveSheet();
  const blobs = new Array();
  // データが存在する行までループする
  for (let i = 2; i <= sheet.getLastRow(); i++) {
    const data = {
      "no": sheet.getRange(i, 1).getValue(),
      "name": sheet.getRange(i, 2).getValue(),
      "age": sheet.getRange(i, 3).getValue(),
    };
    const blob = Utilities.newBlob(JSON.stringify(data, null, 4),'application/json',(i-1).toString() + '.json');
    blobs.push(blob);
  }
  // 任意のフォルダにZIPファイルを保存する
  const folder = DriveApp.getFolderById('hogehoge');
  const zip = Utilities.zip(blobs, 'jsons.zip');
  folder.createFile(zip);
}

ZIPファイルのダウンロード

toJsons関数を実行すると指定したフォルダにZIPファイルが保存されるのでダウンロードするだけです。

1.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?