Google Apps Script - циклический просмотр вложенного ответа JSON и установка значений в электронную таблицу - PullRequest
0 голосов
/ 21 марта 2019

В Google Apps Script я подключаюсь к сервису через 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}]}

Используя следующий код, я ранее взял ответы JSON и успешно записал их в Google Sheets. Однако в этот раз цикл 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);
}}

Как определить длину проанализированного ответа JSON (т. Е. "DataSet") для запуска цикла и записи в лист?

1 Ответ

0 голосов
/ 21 марта 2019

Я заметил некоторые ошибки и отредактировал, чтобы исправить их.У вашего 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...