オブジェクトの中身を指定した順番でシートに書き出したい
このようなオブジェクトがあって
var obj = {
"IoT": "Internet of Things",
"www": "World Wide Web",
"html": "HyperText Markup Language"
};
このようにシートに書き出したい
コード1.gs
var obj = {
"IoT": "Internet of Things",
"www": "World Wide Web",
"html": "HyperText Markup Language"
};
var order = [
"html",
"IoT",
"www"
];
function set_values_to_sheet() {
var ss_url = "URL";
var sh = SpreadsheetApp.openByUrl(ss_url).getSheets()[0];
var last_row = sh.getLastRow();
var start_row = last_row + 1;
var start_col = 1;
var num_rows = 1;
var num_cols = order.length;
var range = sh.getRange(start_row, start_col, num_rows, num_cols);
set_values_order(range);
}
function set_values_order(range){
var array = [];
for(var i = 0; i < order.length; i++){
array.push(obj[order[i]])
}
array = [array];
range.setValues(array);
}
|
意訳オブジェクトを用意する オブジェクトのキーと同じ文字列を配列に入れる(この順番でシートに書き出す) この機能がやること スプレッドシートのURL 先頭のシートを取得 データが入っている最終行を取得して 最終行の次の行で 1列目から 1行分 列数はorder配列の要素の数で 範囲を取得して set_values_orderに渡す; この機能がやること 配列の入れ物を用意して orderの要素の数だけ以下を繰り返す objのorderの順番で値をarrayに追加する arrayを二次元配列にして シートに値を入力する |
補足
ちなみに
配列で順番を決めずに書き出してみるとこうなる
コード2.gsvar obj = {
"IoT": "Internet of Things",
"www": "World Wide Web",
"html": "HyperText Markup Language"
};
var order = [
"html",
"IoT",
"www"
];
function set_values_to_sheet() {
var ss_url = "URL";
var sh = SpreadsheetApp.openByUrl(ss_url).getSheets()[0];
var last_row = sh.getLastRow();
var start_row = last_row + 1;
var start_col = 1;
var num_rows = 1;
var num_cols = order.length;
var range = sh.getRange(start_row, start_col, num_rows, num_cols);
set_values(range);
}
function set_values(range){
var array = [];
var keys = Object.keys(obj);
for(var i = 0; i < keys.length; i++){
array.push(obj[keys[i]])
}
array = [array];
range.setValues(array);
}
| 意訳オブジェクトを用意する オブジェクトのキーと同じ文字列を配列に入れる(この順番でシートに書き出す) この機能がやること スプレッドシートのURL 先頭のシートを取得 データが入っている最終行を取得して 最終行の次の行で 1列目から 1行分 列数はorder配列の要素の数で 範囲を取得して set_valuesに渡す この機能がやること 配列の入れ物を用意して objのキーを取得して そのキーの数だけ以下を繰り返す objのキーの値をarrayに追加する arrayを二次元配列にして シートに値を入力する |
縦に書き出したい場合
縦に書き出すとこうなる
コード3.gsvar obj = {
"IoT": "Internet of Things",
"www": "World Wide Web",
"html": "HyperText Markup Language"
};
var order = [
"html",
"IoT",
"www"
];
function set_values_to_sheet() {
var ss_url = "URL";
var sh = SpreadsheetApp.openByUrl(ss_url).getSheets()[0];
var last_row = sh.getLastRow();
var start_row = last_row + 1;
var start_col = 1;
var num_rows = order.length;
var num_cols = 1;
var range = sh.getRange(start_row, start_col, num_rows, num_cols);
set_values_order(range);
}
function set_values_order(range){
var array = [];
for(var i = 0; i < order.length; i++){
array.push([obj[order[i]]])
}
Logger.log(array)
range.setValues(array);
}
|


