1

UrlFetchApp.fetch メソッドを取得して、スクリプトを取得するために必要な 100 以上の URL の配列で正しく動作させる方法を見つけようとしています。エラー 429 (要求が多すぎる) が発生するか、反復の間に何らかのスリープを入れると、各呼び出しに 8 秒以上かかり、6 分のタイムアウト制限に達するまで、URLFetchApp にかかる時間が一貫して増加します。これが現在の私のコードです。任意の入力をいただければ幸いです。

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]);
    }
}
4

1 に答える 1