使用Google Apps脚本检查文件可用性但是超时

时间:2014-02-25 13:12:30

标签: google-apps-script timeout fetch

我有一张电子表格,其中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秒才能超时,这使得几个不可用文件的列表运行到“超过最长执行时间”

有没有办法中断网址提取或构建截止日期?

1 个答案:

答案 0 :(得分:0)

很抱歉,你不能使用UrlFetchApp.fetch()来获取FTP文件,因为该类说它只支持HTTP和HTTPS协议,请参阅reference 你在FTP服务器或桥接服务器上添加一个HTTP接口(但是谷歌应用程序会是超级的,我认为),你还是没办法处理超时