スプレッドシートからJSONファイルを作ってGoogleドライブに保存する(keyはA列)
ではA列をkeyにしましたが
今回は1行目をkeyにしてJSONを作ってみます
このようなシートから
このようなJSONを作成する
そしてGoogleドライブに保存するというのが以下のコードです
コード.gs
var FILE_NAME = "ファイル名";
var FOLDER_ID = "フォルダのID";
function create_json(){
var values = get_values();
var keys = values.shift();
var array = get_array(values, keys);
var json = get_json(array);
create_file(json);
}
function get_values() {
var sheet = SpreadsheetApp.getActiveSheet();
var last_row = sheet.getLastRow();
var last_col = sheet.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 = sheet.getRange(start_row, start_col, numRows, numColumns);
var values = range.getValues();
return values;
}
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;
}
function create_obj(values, keys) {
var obj = {}
for (var j = 0; j < keys.length; j++) {
obj[keys[j]] = values[j];
}
return obj;
}
function get_json(array){
var json = JSON.stringify(array);
return json;
}
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);
drive.createFile(file);
}
|
意訳ファイル名を決める フォルダIDを指定する この機能がやること get_values()でアクティブシートの値を取得して 1行目をオブジェクトのキーとして抜き出して get_array()に残りの値(2行目以降)とkeysを渡して 返ってきたarrayをJSONにして create_file()に渡してファイルを作成する この機能がやること 対象のシートを取得して データの入っている最終行を取得して データの入っている最終列を取得して 対象範囲の先頭の行を指定して 対象範囲の先頭の列を指定して 対象の行数を取得して(最終行 - 先頭行だと先頭行の分が含まれないので+1する) 対象の列数を取得して(最終列 - 先頭列だと先頭列の分が含まれないので+1する) 範囲を指定して 値を取得して 返す この機能がやること 結果を入れる配列を用意して 渡されたvaluesの数だけ以下を繰り返す valuesの値を一つずつcreate_objにkeysと一緒に渡して 返ってきたobjをarrayに追加する 繰り返し処理でobjが追加されたarrayを返す この機能がやること 空のオブジェクトを用意して 渡されたkeysの数だけ以下を繰り返す keysの値とvaluesの値でオブジェクトを作る 出来上がったオブジェクトを返す この機能がやること 渡されたarrayをJSONに変換して 返す この機能がやること ファイルの種類をapplication/jsonにして ファイル名を指定して Blobを作成して 渡されたjsonと文字コードを渡して 指定したフォルダに ファイルを作成する |
関連記事
スプレッドシートからJSONファイルを作ってGoogleドライブに保存する(keyはA列)
配列の中にオブジェクトを作りたい
オブジェクトのキーと値をスプレッドシートに書き込みたい

