我一直在试图弄清楚如何让UrlFetchApp.fetch方法在100多个url的数组上正常工作,我需要它来获取脚本。我要么遇到错误429(请求太多),要么我在迭代之间放置任何类型的睡眠,URLFetchApp所花费的时间一直在增加,直到每次调用需要8秒以上并且我达到了6分钟的超时限制。这是我现在的代码。任何输入将不胜感激。
function migrateSheetsToFiles() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var parentfolder = DriveApp.getFileById(ssId).getParents().next();
var mySheets = ss.getSheets();
var fileID = ss.getId();
var FetchArray = [];
var sheetnameArray = [];
var responseArray = [];
var params = {
method : "GET",
headers : {"authorization": "Bearer " + ScriptApp.getOAuthToken()}
};
for(var i=0; i<mySheets.length; i++){
var currentSheet = mySheets[i];
var sheetname = currentSheet.getName();
sheetnameArray[i] = sheetname;
var currentSheetId = currentSheet.getSheetId();
var url = "https://docs.google.com/spreadsheets/d/" + fileID + "/export?format=xlsx&gid=" + currentSheetId;
FetchArray[i] = url;
}
for (i=0; i<FetchArray.length; i++) {
responseArray = UrlFetchApp.fetch(FetchArray[i], params);
Utilities.sleep(1000);
}
for (i=0; i<FetchArray.length; i++) {
parentfolder.createFile(responseArray[i]).setName(sheetnameArray[i]);
}
}
答案 0 :(得分:1)
您似乎希望将电子表格中的工作表分隔到单个工作表,并将每个工作表创建为一个电子表格。我对此的理解是否正确?为此,如何使用以下方法?
mySheets
的数据后,它会使用触发器从每个分离的数据创建电子表格。
UrlFetchApp.fetch()
和/或SpreadsheetApp
在没有Sheets API v4
的情况下从电子表格中分离工作表。
如果这对你没用,我很抱歉。