在Google电子表格中超过了最大执行时间

时间:2018-07-17 06:48:48

标签: time max spreadsheet

有一个Twilio号码查询服务,可将Google电子表格用于查询服务。但是问题是Google只允许几分钟运行循环,并且会抛出超出执行时间的最大错误。

代码如下:

function lookup(phoneNumber) {
    var lookupUrl = "https://lookups.twilio.com/v1/PhoneNumbers/" + phoneNumber + "?Type=carrier"; 

    var options = {
        "method" : "get"
    };

    options.headers = {    
        "Authorization" : "Basic " + Utilities.base64Encode("ACCOUNTSID:AUTHTOKEN")
    };

    var response = UrlFetchApp.fetch(lookupUrl, options);
    var data = JSON.parse(response); 
    Logger.log(data); 
    return data; 
}

function lookupAll() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var startRow = 2; 
    var numRows = sheet.getLastRow() - 1; 
    var dataRange = sheet.getRange(startRow, 1, numRows); 
    var phoneNumbers = dataRange.getValues();

    for (var i in phoneNumbers) {
        var phoneNumber = phoneNumbers[i]; 
        var spreadsheetRow = startRow + Number(i); 
        sheet.getRange(spreadsheetRow, 2, spreadsheetRow, 6).setValue("");
        if (phoneNumber != "") { 
            try { 
                data = lookup(phoneNumber);
                if (data['status'] == 404) { 
                    sheet.getRange(spreadsheetRow, 2).setValue("not found");
                } else {
                    sheet.getRange(spreadsheetRow, 2).setValue("found");
                    sheet.getRange(spreadsheetRow, 3).setValue(data['carrier']['type']);
                    sheet.getRange(spreadsheetRow, 4).setValue(data['carrier']['name']);
                    sheet.getRange(spreadsheetRow, 5).setValue(data['country_code']);
                    sheet.getRange(spreadsheetRow, 6).setValue(data['national_format']);
                }  
            } catch(err) {
                Logger.log(err);
                sheet.getRange(spreadsheetRow, 2).setValue('lookup error');
            }
        }
    }
}

function myFunction() {
    lookupAll(); 
}

我使用lookupAll函数,一次可以查找250个数字(约6分钟)。 现在,我需要一口气查看2500多个数字。我该怎么办?

0 个答案:

没有答案