为了账号安全,请及时绑定邮箱和手机立即绑定

如何遍历多个 URL 以在 Google Apps 脚本中获取 JSON 响应?

如何遍历多个 URL 以在 Google Apps 脚本中获取 JSON 响应?

一只斗牛犬 2021-07-03 10:03:43
我正在使用Google Apps Script 中的第三方API(来自名为 Simpli.fi 的公司)将一些数据提取到电子表格中。我能够很好地验证我的 API 调用,并且可以使用一个 URL 提取所有我需要的数据。问题是调用这个API的URL的格式如下:https://app.simpli.fi/api/organizations/ {CLIENT_ID}/{SOME_ENDPOINT}当我插入一个客户端 ID 和一个端点时,它可以工作,但是我不想使用每个数据端点为每个客户端单独提取数据。我希望在我的所有客户端上提取数据,并且还希望访问多个端点,例如“ /audiences”或“ /campaigns”。我希望有一种方法(类似承诺中的JavaScript),我可以通过多个网址进行迭代,以从API获取的所有数据。现在,我只是专注于从“ /audiences”端点为我的所有客户提取我想要的所有数据。我已经设置了一个访问我的包含所有客户端代码的Google Sheet的数组,并使用 for 循环将其插入到 URL 中,效果很好:// iterate through all URL endpoints and client codesvar ss = SpreadsheetApp.getActiveSpreadsheet();var sheet = ss.getSheetByName('formatting');var range = sheet.getRange(['B2:B']).getValues();var clients = range.filter(String);var urlOneArray = [];for (var i = 0; i < clients.length; i++) {  var urlOne = [baseURL + clients[i] + '/audiences'];  for (var j = 0; j < urlOne.length; j++) {    urlOneArray = urlOne[j];    Logger.log(urlOneArray);  }}上面根据需要记录每个构建的 URL 的列表。将所有内置 URL 推送到 后urlOneArray,我尝试使用UrlFetchApp.fetchAll以下方式调用:for (i=0; i < urlOneArray.length; i++) {  var response = UrlFetchApp.fetchAll(urlOneArray[i], params);  Utilities.sleep(500);  Logger.log(response);}尝试使用此方法时,我收到此错误:“找不到方法 fetchAll(string,object)。(第 35 行,文件“代码”)”如果有一种方法可以遍历多个 URL 以一次拉取API中的所有数据,我将非常感谢您的指点。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

问题:

  • 无效语法: UrlFetchApp.fetchAll(请求 Object[])接受对象数组,而您提供一个字符串和一个对象作为参数。

解决方案:

  • 有效语法:为每个端点/客户端创建一个对象数组并将其作为参数提供给fetchAll()

片段:

function copyParams() {//shallow clone params object

  for (var i in params) {

    this[i] = params[i];

  }

}

var endPoints = ['/audiences', '/campaigns'];

var requests = [];

var url, obj;

clients.forEach(function(client) {

  endPoints.forEach(function(endPoint) {

    obj = new copyParams();

    url = baseUrl + '/' + client[0] + endPoint;

    obj.url = url;

    requests.push(obj);

  });

});

console.log(requests);

var responseArray = UrlFetchApp.fetchAll(requests);

console.log(responseArray);


查看完整回答
反对 回复 2021-07-08
  • 1 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信