Google apps script 谷歌应用程序脚本,使用URLFACHTAPP.fetch和大量URL';s

Google apps script 谷歌应用程序脚本,使用URLFACHTAPP.fetch和大量URL';s,google-apps-script,google-sheets,urlfetch,http-status-code-429,Google Apps Script,Google Sheets,Urlfetch,Http Status Code 429,我一直在试图弄清楚如何让UrlFetchApp.fetch方法在一个包含100多个url的数组上正常工作,我需要它来获取脚本。我要么遇到错误429(请求太多),要么在迭代之间设置任何类型的睡眠,URLFetchApp所花费的时间会持续增加,直到每次调用花费8秒以上的时间,我达到了6分钟的超时限制。这是我现在的代码。如有任何意见,将不胜感激 function migrateSheetsToFiles() { var ss = SpreadsheetApp.getActiveSpreadsh

我一直在试图弄清楚如何让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]);
    }
}
函数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=[];
变量参数={
方法:“获取”,
标题:{“授权”:“承载者”+ScriptApp.getOAuthToken()}
};

对于(var i=0;i而言,您似乎希望将表格从电子表格中分离到单独的表格,并将每个表格创建为一个电子表格。我对这一点的理解是否正确?对于这一点,以下方法如何

  • 在分离了
    mySheets
    的数据后,它使用触发器从每个分离的数据创建电子表格。
    • 我认为这是可能的,但完成这项工作需要时间
  • 它使用
    SpreadsheetApp
    和/或
    sheets API v4
    将表格与不带
    UrlFetchApp.fetch()的电子表格分开。
    
    • 我不知道是否发生了限制错误。但是如果这起作用,它只需运行一次就可以完成工作
  • 如果这对你没用,我很抱歉