一只斗牛犬
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);
添加回答
舉報
0/150
提交
取消