我有一张电子表格,其中A列是FTP文件的网址列表。我正在尝试构建一个脚本来检查此列表中的文件是否可用。使用 UrlFetchApp.fetch()查看是否存在错误,但此方法会运行最长执行时间,因为丢失的文件会导致很长的延迟。
function debug(){
var files = SpreadsheetApp.getActiveSheet().getDataRange().getValues()
for(var i = 1; i < files.length; i++) {
var file = files[i][0];
try {
response = UrlFetchApp.fetch(file);
} catch(error) {
Logger.log(error);
continue;
}
Logger.log(response.getResponseCode());
}
}
这是来自执行记录的剪辑
14-02-25 14:42:33:156 EET] Starting execution
[14-02-25 14:42:33:169 EET] SpreadsheetApp.getActiveSheet() [0 seconds]
[14-02-25 14:42:33:209 EET] Sheet.getDataRange() [0.039 seconds]
[14-02-25 14:42:33:235 EET] Range.getValues() [0.025 seconds]
[14-02-25 14:42:33:236 EET] Logger.log([ftp://foo.bar/514549.txt.gz, []]) [0 seconds]
[14-02-25 14:42:34:357 EET] UrlFetchApp.fetch([ftp://foo.bar/514549.txt.gz]) [1.12 seconds]
[14-02-25 14:42:34:358 EET] HTTPResponse.getResponseCode() [0 seconds]
[14-02-25 14:42:34:358 EET] Logger.log([200.0, []]) [0 seconds]
[14-02-25 14:42:34:358 EET] Logger.log([ftp://foo.bar/302489.txt.gz, []]) [0 seconds]
[14-02-25 14:43:34:350 EET] UrlFetchApp.fetch([ftp://foo.bar/302489.txt.gz]) [59.988 seconds]
[14-02-25 14:43:34:356 EET] Logger.log([Exception: Address unavailable: ftp://foo.bar/302489.txt.gz, []]) [0 seconds]
正如我们所看到的,UrlFetchApp.fetch()需要60秒才能超时,这使得几个不可用文件的列表运行到“超过最长执行时间”。
有没有办法中断网址提取或构建截止日期?
答案 0 :(得分:0)
很抱歉,你不能使用UrlFetchApp.fetch()来获取FTP文件,因为该类说它只支持HTTP和HTTPS协议,请参阅reference 你在FTP服务器或桥接服务器上添加一个HTTP接口(但是谷歌应用程序会是超级的,我认为),你还是没办法处理超时