スプレッドシートから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; } |
関連記事