LANG SELRCT

コードを書く場所についてはこちら

2018年8月4日土曜日

スプレッドシートからJSONファイルを作ってGoogleドライブに保存する(keyは1行目)(外部スクリプトファイル)


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


関連記事