getValues()だと
[[一行目の値の配列], [二行目の値の配列],...]
というような2次元配列で行単位の配列が取得できる
これを
[[一列目の値の配列], [二列目の値の配列],...]
というように列単位の配列で取得したい
今回使うシート
コピペ用のデータ
一行目をkeyにして二行目以降を配列にして
このような形のデータにしたい
[
{hira=[あいうえお, かきくけこ, さしすせそ, たちつてと]},
{kana=[アイウエオ, カキクケコ, サシスセソ]}
]
コード.gs
function getData_gs() {
var ss_url = 'スプレッドシートURL';
var ss = SpreadsheetApp.openByUrl(ss_url);
var sheet = ss.getSheets()[0];
var headers = getRow1Values(sheet);
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
var data = [];
for(var i = 0; i < lastCol; i++) {
var col = i + 1;
var range = sheet.getRange(2, col, lastRow, 1);
var values = range.getValues();
var array = from2Dto1D(values);
var obj = {};
obj[headers[i]] = array;
data.push(obj);
}
Logger.log(data);
}
function getRow1Values(sheet) {
var lastCol = sheet.getLastColumn();
var range = sheet.getRange(1, 1, 1, lastCol);
var row1Values = range.getValues()[0];
return row1Values;
}
function from2Dto1D(array){
for(var i = 1; i < array.length; i++){
if(array[i][0].length > 0) {//array[i].lengthだと空白も1になるので[0]にしてみる
Array.prototype.push.apply(array[0], array[i]);
}
}
return array[0];
}
|
実行結果

