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]; } |
実行結果