2015-12-21 159 views
-1

我有一个Google表格,其中一列有300个超链接。我想写一个相邻列的公式,它会返回同一(或引用)行上链接的超链接响应代码(200或403/404),而不是单独测试每个链接。这将如何完成?Google表格超链接响应代码

回答

1

是的,这将是可能的:

var response = UrlFetchApp.fetch(urlFromCell).getHTTPHeaders().getResponseCode(); 

但要注意,如果自定义函数放入每个相邻小区中在第2列,然后他们会在每次更改表重新计算。

这会通过your quota for fetch calls快速吃掉。尽管每天通话量为2万次,但如果在一天内发生这种情况,会在66次更新后发生。

更好的办法是使用单个命令来处理按钮按下或菜单命令调用的整个列 - 这仍然是300个单独的调用,可能会遇到6分钟的执行时间限制,因为它们将同步发生。

0

感谢乔纳森,
我克隆你的代码剪断下面的函数“LinkTest()”,但我发现getHTTPHeaders没有被预先输入向导提供,每个“LinkTest2()”。然而,我有点困惑,因为我期望“响应”能够在所有情况下显示响应代码的实际值,而不仅仅是200.每当我浏览到一个不好的链接时,我会得到一个403,404或410例如。然而,这些情况下的函数只返回了“#ERROR”。进一步挖掘(here)显示了“muteHttpExceptions”属性。当设置为“真”时,它会产生所需的结果。

function LinkTest(urlFromCell) { // didn't work for me... 
    var response = UrlFetchApp.fetch(urlFromCell).getHTTPHeaders().getResponseCode(); 
    return response; 
} 
function LinkTest2(urlFromCell) { // better 
    var response = UrlFetchApp.fetch(urlFromCell, {"muteHttpExceptions": true}).getResponseCode() 
    return response; 
} 

返回: