亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遍歷多個 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獲取的所有數據?,F在,我只是專注于從“ /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 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號