2017年8月30日

GAS で外部 json ファイルを読み込み、json ファイルを Google Drive に保存する


Google Apps Script 初心者なので手さぐりで作りました。


必要があったので作ったのですが、ネット上には「外部 json ファイルを読み込み」の部分は多く見つかるものの、「json ファイルを Google Drive に保存する」部分が見つかりませんでした。そのため思ったより時間がかかりました。jsonで書き出すにはBlob形式にするのがポイントのようです。




var url = '外部URL';
var json = UrlFetchApp.fetch(url).getContentText();
var jsonData = JSON.parse(json);

/* 中略 */
配列「jsonData」を読み込み、編集後に配列「jsonArr」に格納したとする
/* 中略 */

var jsonString = JSON.stringify(jsonArr);
var drive = DriveApp.getFolderById('Google Drive のフォルダID');
var fileName = '保存ファイル名';
var contentType = 'application/json';
var charset = 'utf-8';
var blob = Utilities.newBlob('', contentType, fileName).setDataFromString(jsonString, charset);
drive.createFile(blob);


注意点

①上記 jsonString にはjsonとして必要な頭の「{」とお尻の「}」が付かないので、文字列で連結する必要がありました。

②上記のように単純にファイル保存すると、同名ファイルがあった場合には上書きされずに複数の同名ファイルが存在する状況になります。どうやら「上書きモード」みたいなものは無いようなので、フォルダを検索し、同名ファイルが存在した場合には下記のように削除した後に書き出しました。
var fileIT = drive.getFilesByName(fileName).next();
drive.removeFile(fileIT);

続きがあります



0 件のコメント:

コメントを投稿