スプレッドシートからJSONファイルを作ってGoogleドライブに保存する(keyは1行目)
ではアクティブシートを対象にしましたが
今回はスタンドアロンのスクリプトファイルで書いてみます
コード.gs
/************************************
global
************************************/
var FILE_NAME = "作成するファイル名";
var FOLDER_ID = "保存先のGoogleドライブのフォルダID";
var SS_URL = "https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートID";//対象のシートのURL
var SHEET_ID = SS_URL.split("gid=")[1];
/************************************
create_json
************************************/
function create_json(){
var ss = SpreadsheetApp.openByUrl(SS_URL);
var sh = get_sheet(ss, SHEET_ID);
var values = get_values(sh);
var keys = values.shift();
var array = get_array(values, keys);
var json = get_json(array);
var file_url = create_file(json);
Logger.log(file_url);
}
/************************************
get_sheet
************************************/
function get_sheet(ss, id) {
var shs = ss.getSheets();
for (var i = 0; i < shs.length; i++) {
if (shs[i].getSheetId() == id) {
break;
}
}
var sh = ss.getSheets()[i];
return sh;
}
/************************************
get_values
************************************/
function get_values(sh) {
var last_row = sh.getLastRow();
var last_col = sh.getLastColumn();
var start_row = 1;
var start_col = 1;
var numRows = last_row - start_row + 1;
var numColumns = last_col - start_col + 1;
var range = sh.getRange(start_row, start_col, numRows, numColumns);
var values = range.getDisplayValues();
return values;
}
/************************************
get_array
************************************/
function get_array(values, keys){
var array = [];
for (var i = 0; i < values.length; i++) {
var obj = create_obj(values[i], keys);
array.push(obj)
}
return array;
}
/************************************
create_obj
************************************/
function create_obj(values, keys) {
var obj = {}
for (var j = 0; j < keys.length; j++) {
obj[keys[j]] = values[j];
}
return obj;
}
/************************************
get_json
************************************/
function get_json(array){
var json = JSON.stringify(array);
return json;
}
/************************************
create_file
************************************/
function create_file(json) {
var content_type = "application/json";
var file_name = FILE_NAME;
var blob = Utilities.newBlob("", content_type, file_name);
var file = blob.setDataFromString(json, "utf-8");
var drive = DriveApp.getFolderById(FOLDER_ID);
var created_file = drive.createFile(file);
var url = created_file.getUrl();
return url;
}
|
関連記事