オブジェクトの中身を指定した順番でシートに書き出したい
このようなオブジェクトがあって
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); } |