スプレッドシートから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列)
配列の中にオブジェクトを作りたい
オブジェクトのキーと値をスプレッドシートに書き込みたい