Google Visualization APIでシートのデータを取得する
ではシートのデータを配列にして取得しましたが
今回はオブジェクトにして取得するコードを書きます。
例としてこのようなシートを用意して
そのシートのデータを
このようなオブジェクトにして取得したい。
[{ date = 2019 / 11 / 01, task = task1, label = label1 }, { date = 2019 / 11 / 01, task = task2, label = label2 }, { date = 2019 / 11 / 01, task = task3, label = label1 }, { date = 2019 / 11 / 02, task = task4, label = label3 }, { date = 2019 / 11 / 02, task = task5, label = label2 }, { date = 2019 / 11 / 02, task = task6, label = label1 }] |
デモデータ
コード.gs
var SS_ID = "スプレッドシートのID"; var SH_ID = 0;// シートのID var BASE_URL = "https://docs.google.com/spreadsheets/d/"; var URL = BASE_URL + SS_ID + "/gviz/tq?gid=" + SH_ID + "&tqx=out:json&tq="; SpreadsheetApp.openById(SS_ID); function get_public_data() { var options = null; data_via_gviz(options); } function get_private_data() { var access_token = get_access_token(); var headers = get_headers(access_token); var options = get_options(headers); data_via_gviz(options); } function get_access_token() { var access_token = ScriptApp.getOAuthToken(); return access_token; } function get_headers(access_token) { var headers = { "Authorization": "Bearer " + access_token } return headers; } function get_options(headers) { var options = { "contentType": "application/json", "headers": headers, "muteHttpExceptions": true } return options; } function data_via_gviz(options) { var query = encodeURIComponent("SELECT A, B, C"); var response = UrlFetchApp.fetch(URL + query, options); var jobj = get_jobj(response); var array = get_array(jobj); Logger.log(array); } function get_jobj(response) { var data = response.getContentText(); data = data.split("google.visualization.Query.setResponse(")[1]; data = data.substr(0, data.length - 2); var jobj = JSON.parse(data); return jobj; } function get_array(jobj) { var col_labels = get_col_labels(jobj); var row = jobj["table"]["rows"]; var array = []; for (var i = 0; i < row.length; i++) { var obj = {}; for (var j = 0; j < col_labels.length; j++) { var value = ''; var icj = jobj["table"]["rows"][i]["c"][j]; if(icj === null) {// nullならば value = ''; } else { value =icj["v"]; var formatted = icj["f"]; if(formatted) {// formattedが存在すれば value = formatted;// valueに入れる } obj[col_labels[j]] = value; } } array.push(obj); } return array; } function get_col_labels(jobj) { var cols = jobj["table"]["cols"]; var col_labels = []; for(var i = 0; i < cols.length; i++) { var label = cols[i]['label']; col_labels.push(label) } return col_labels } |
関連記事
Google Visualization APIでシートのデータを取得する
Google Visualization APIの vはvalueで、fはformettedValueっぽい