>source

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 스프레드 시트에 성공적으로 작성했습니다. 그러나 이번에는 dataSet 때문에 FOR 루프가 실행되지 않습니다.   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

    몇 가지 버그를 발견하고 수정하기 위해 편집했습니다. 당신의 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);
    }
    
    

관련 자료

  • 이전 python - astliteral_eval ()을 사용하여 데이터를 정리하는 동안 구문 오류가 발생 함
  • 다음 csv - Tableau의 날짜/시간 외부 참여 이해