Jer*_*son 3 json google-apps-script
在 Google Apps 脚本中,我通过 OAuth2 连接到服务。我收到一个 JSON 响应并对其进行解析,JSON.parse(response.getContentText());因此它会记录如下内容:
{Results=[{Id=45364743, Description=null, Name=Math I , IsActive=true},
{Id=45364768, Description=null, Name=Math II, IsActive=true}]}
Run Code Online (Sandbox Code Playgroud)
使用以下代码,我之前已获取 JSON 响应并将其成功写入 Google 表格。但是,这次 FOR 循环不会运行,因为dataSet没有length. 我猜这是因为所有内容都嵌套在“结果”下。
function getService2() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Data');
var key = 'kjeu7hjf7873alkjhehjhfayuluoojsds'
var options = {
method: "get",
headers: {
Authorization: "Bearer " + key,
api_key: key,
}
}
var response = UrlFetchApp.fetch(URL, options);
var dataAll = JSON.parse(response.getContentText());
var dataSet = dataAll;
Logger.log(dataSet)
var rows = [],
data;
for (i = 0; i < dataSet.length; i++)
if ( dataSet.length > 0.0){
data = dataSet[i];
rows.push([data.Id, data.Name, data.IsActive ]); //your JSON entities here
dataRange = sheet.getRange(lastRow + 1, 1, rows.length , 2);
dataRange.setValues(rows);
}}
Run Code Online (Sandbox Code Playgroud)
我如何确定解析的 JSON 响应(即“dataSet”)的长度以运行循环并写入工作表?
我注意到一些错误并进行了编辑以修复它们。你的for循环有问题。您在每次迭代时都写入工作表,但性能不高。
function getService2() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Data');
var key = 'kjeu7hjf7873alkjhehjhfayuluoojsds';
var options = {
method: 'get',
headers: {
Authorization: 'Bearer ' + key,
api_key: key
}
};
var response = UrlFetchApp.fetch(URL, options);
var dataAll = JSON.parse(response.getContentText());
var dataSet = dataAll.Results;
Logger.log(dataSet);
var rows = [],
data;
for (i = 0; i < dataSet.length; i++) {
data = dataSet[i];
rows.push([data.Id, data.Name, data.IsActive]); //your JSON entities here
}
sheet.getRange(lastRow + 1, 1, rows.length, 3).setValues(rows);
}
Run Code Online (Sandbox Code Playgroud)