こういうスプレッドシートを
JSONファイルにしてGoogleドライブに保存する
(保存したファイルを開いた画面↓)
コード.gsの
SS_URL:保存したいシートがあるスプレッドシートのURL
FOLDER_ID:保存先のフォルダのID
FILE_NAME:保存したいファイル名
は任意で設定して下さい
コード.gs
function save_to_drive_json() {
var data = get_values();
var keys = data[0];
var values = data[1];
var jobj = create_jobj(keys, values);
create_file(jobj);
}
function get_values() {
var ss_url = "SS_URL";
var ss = SpreadsheetApp.openByUrl(ss_url);
var sheet = ss.getSheets()[0];
var last_row = sheet.getLastRow();
var keys = sheet.getRange("A1:A" + last_row).getValues();
var values = sheet.getRange("B1:B" + last_row).getValues();
var data = [keys, values];
return data;
}
function create_jobj(keys, values) {
var obj = new Object();
for (var i = 0; i < keys.length; i++) {
obj[keys[i]] = values[i][0];
}
var jobj = JSON.stringify(obj);
return jobj;
}
function create_file(jobj) {
var content_type = "application/json";
var file_name = "FILE_NAME";
var blob = Utilities.newBlob("", content_type, file_name);
var file = blob.setDataFromString(jobj, "utf-8");
var drive = DriveApp.getFolderById("FOLDER_ID");
drive.createFile(file);
}
|
意訳この機能がやること get_values()を実行して 返ってきた値の0番目のデータを取得し 返ってきた値の1番目のデータを取得し create_jobjに渡して 返ってきた値をcreate_fileに渡す この機能がやること スプレッドシートのURLを指定して 開いて 先頭のシートを取得して データが入っている最終行を取得して A列のデータを取得し B列のデータを取得し 配列に入れて 返す この機能がやること オブジェクトを作成して 受け取ったkeysの数だけ以下を繰り返す keysとvaluesの値をセットにして一つずつオブジェクトに入れて 最終的にできたオブジェクトをJSONに変換して 返す この機能がやること content_typeを設定する ファイル名を設定する Blob objectを作成して jobjと文字コードを渡し 指定したフォルダに ファイルを作成する |
A列をkeyにしてB列以降を配列に入れるVersion
コード.gsvar FILE_NAME = "ファイル名";
var FOLDER_ID = "フォルダID";
function save_to_drive_json() {
var values = get_values();
var jobj = create_jobj(values);
create_file(jobj);
}
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 create_jobj(values) {
var obj = new Object();
for (var i = 0; i < values.length; i++) {
var key = values[i].shift();
var value = values[i];
obj[key] = value;
}
var jobj = JSON.stringify(obj);
return jobj;
}
function create_file(jobj) {
var content_type = "application/json";
var file_name = FILE_NAME;
var blob = Utilities.newBlob("", content_type, file_name);
var file = blob.setDataFromString(jobj, "utf-8");
var drive = DriveApp.getFolderById(FOLDER_ID);
drive.createFile(file);
}
| 意訳ファイル名を決める フォルダ名を決める この機能がやること get_values()を実行して 返ってきたvaluesをcreate_jobjに渡して 返ってきた値をcreate_fileに渡す この機能がやること 対象のシートを取得して データの入っている最終行を取得して データの入っている最終列を取得して 対象範囲の先頭の行を指定して 対象範囲の先頭の列を指定して 対象の行数を取得して(最終行 - 先頭行だと先頭行の分が含まれないので+1する) 対象の列数を取得して(最終列 - 先頭列だと先頭列の分が含まれないので+1する) 範囲を指定して 値を取得して 返す この機能がやること オブジェクトを作成して 受け取ったvaluesの数だけ以下を繰り返す values[i]の先頭の要素を抜き出してkeyにして 残りをvalueにして オブジェクトを作る 最終的にできたオブジェクトをJSONに変換して 返す この機能がやること ファイルの種類をapplication/jsonにして ファイル名を指定して Blobを作成して 渡されたjsonと文字コードを渡して 指定したフォルダに ファイルを作成する |
参考
Class Utilities
https://developers.google.com/apps-script/reference/utilities/utilities

