【问题标题】:Need help populating Google Sheets from nested JSON需要帮助从嵌套 JSON 填充 Google 表格
【发布时间】:2018-12-19 15:57:29
【问题描述】:

提前感谢您的帮助。

我正在尝试使用他们的 Analytics API (https://developers.hubspot.com/docs/methods/analytics/get-analytics-data-breakdowns) 将 Hubspot 帐户中的数据导入 Google 表格

我在 Google App Script 中编写了以下脚本:

var url = API_URL + "/analytics/v2/reports/totals/summarize/daily?&start=20181201&end=20181219";
var response = UrlFetchApp.fetch(url, headers);
var json = response.getContentText();
var dataALL = JSON.parse(json);
var dataSet = dataALL;

Logger.log(dataALL);

var rows = [],
    data;

for (i = 0; i < dataSet.length; i++) {
  data = dataSet[i];
  rows.push(data.visits, data.leads);
}

Logger.log(rows)

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheet = ss.getActiveSheet();

dataRange = sheet.getRange(1, 1, rows.length, 2);

dataRange.setValues([rows])

但是当我尝试Logger.log(rows) 时,它却是空的。当我尝试 Logger.log(dataSet.length) 它返回 0.0

所以我认为我在将 JSON 数据放入数组时出错了。我进行了大量研究,但找不到适合我的具体情况的解决方案。

我尝试写入电子表格的 JSON 格式如下:

 {2018-12-03   =   [  
      {  
         contactsPerPageview=0.15384615384615385,
         rawViews=143,
         subscribers=1,
         contactToCustomerRate=0.045454545454545456,
         privacyConsentDeclines=11,
         customersPerPageview=0.006993006993006993,
         sessionToContactRate=0.2037037037037037,
         pageviewsPerSession=1.3240740740740742,
         opportunities=3,
         visits=108,
         visitors=98,
         submissionsPerPageview=0.027972027972027972,
         submissions=4,
         leads=17,
         privacyConsentApproves=9,
         customers=1,
         contacts=22,
         newVisitorSessionRate=0.9074074074074074
      }
   ],

2018-12-14   =   [  
      {  
         contactsPerPageview=0.06722689075630252,
         rawViews=238,
         subscribers=4,
         privacyConsentDeclines=14,
         sessionToContactRate=0.08290155440414508,
         pageviewsPerSession=1.233160621761658,
         opportunities=6,
         visits=193,
         visitors=182,
         submissionsPerPageview=0.029411764705882353,
         submissions=7,
         leads=6,
         privacyConsentApproves=12,
         contacts=16,
         newVisitorSessionRate=0.9430051813471503
      }]}

你们能指出我正确的方向吗?

再次感谢,

【问题讨论】:

    标签: javascript json google-apps-script hubspot


    【解决方案1】:

    由于dataSet 是一个对象,它没有.length 属性,并且您的for 循环将检查i 是否小于Undefined,从而导致错误。这意味着 for 循环永远不会运行。

    我认为你想要达到的目标更接近于:

      var dataSet = Object.keys(dataALL);
    
      Logger.log(dataALL);
    
      var rows = [], data;
    
      for (i = 0; i < dataSet.length; i++) {
    
          data = dataALL[dataSet[i]];
          rows.push(data[0].visits, data[0].leads);
      }
    
      Logger.log(rows)
    

    请注意,由于您的对象中的每个键都包含一个数组,因此我还将[0] 添加到data.visitsdata.leads,从而得到rows.push(data[0].visits, data[0].leads);

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 2021-01-02
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多