javascript - Hubspot API - 如何循环获取所有交易

标签 javascript google-apps-script hubspot

循环一直返回相同的 JSON 对象,但我更改了偏移量...有人知道哪里出了问题吗?

为了保险起见,我只会写整个函数,可能不会很枯燥。

function getDeals (api_key) {

  //get the right spreadsheet & sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Blad1');
  sheet.clear();
  sheet.appendRow(["Dealname", "Dealstage", "Close date", "Amount"]);

  //set up API variables

  var offset = 0;
  var queryParams = '&limit=250&offset=' + offset + '&properties=dealname&properties=dealstage&properties=closedate&properties=amount'
  var _url = 'https://api.hubapi.com/deals/v1/deal/paged?hapikey=' + api_key;
  var options = {
    "method": "GET",
    "muteHttpExceptions": true
  };

  //set up functions for call
  var apiCall = function(url, endpoint){
    var apiResponse = UrlFetchApp.fetch(url + endpoint,options);
    var json = JSON.parse(apiResponse);
    return json
  };

  var filterDeals = function (url, unfiltered_deals){
    var i = 0;
    while (unfiltered_deals.status !== "error" && i < (unfiltered_deals.deals).length) {
      if (unfiltered_deals.deals[i].properties.dealstage.value == "closedwon") {
        var dealname = unfiltered_deals.deals[i].properties.dealname.value;
        var dealstage = unfiltered_deals.deals[i].properties.dealstage.value;
        var closedate = new Date((unfiltered_deals.deals[i].properties.closedate.value)*1000);
        var amount = unfiltered_deals.deals[i].properties.amount.value;
        var deals = [dealname, dealstage, closedate, amount];
        // Append Hubspot data to Spreadsheet
        sheet.appendRow(deals);
      }
      i++;
     }
    if (unfiltered_deals.hasMore) {
      offset = unfiltered_deals.offset;
      var newDeals = apiCall(url, queryParams);
      filterDeals(_url, newDeals, offset, queryParams);
    } else {
      return
    }
  }

   //Api call to get deals  
  var dealCall = apiCall(_url, queryParams);
  var filteredDeals = filterDeals(_url, dealCall);

};

我使用 API key 调用此函数。

最佳答案

您始终获得相同 JSON 参数的原因是您永远不会使用新的偏移值更新变量 queryParams。在您的代码片段中:

if (unfiltered_deals.hasMore) {
      offset = unfiltered_deals.offset; 
      var newDeals = apiCall(url, queryParams);
      filterDeals(_url, newDeals, offset, queryParams);
    }

您将获得新的偏移值,即 offset = unfiltered_deals.offset;。但是你需要像这样重新初始化它的值来更新你的 queryParams

  if (unfiltered_deals.hasMore) {
      offset = unfiltered_deals.offset; 
      queryParams = '&limit=250&offset=' + offset + '&properties=dealname&properties=dealstage&properties=closedate&properties=amount'
      var newDeals = apiCall(url, queryParams);
      filterDeals(_url, newDeals, offset, queryParams);
    }

关于javascript - Hubspot API - 如何循环获取所有交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118713/

相关文章:

javascript - 你如何消除一个子类的所有 div,但一个?

authentication - 在Google App脚本中删除YouTube视频

javascript - CSS & JavaScript - 无论如何要用 CSS 模拟这种 JS 行为?

javascript - 使实体从 ImpactJS 中的另一个实体反弹

javascript - 如果名称在列中,则将该列转换为日期格式 Google 表格

javascript - GAS 库和 Web 应用程序权限 [ReferenceError : "service" is not defined.]

post - 如何在 pentaho kettle 的 HTTP POST 中设置内容类型?

python - 使用 OFFSET 在 Python 中迭代 JSON

javascript - 如何修改系统生成的 Hubspot javascript 表单

javascript - 谷歌标签管理器删除一些 {{Click Text}}