我在一个专栏中有一个包含大约300个超链接的Google表格。我想为相邻列编写一个公式,它将返回相同(或引用)行上的链接的超链接响应代码(200或403/404),而不是单独测试每个链接。怎么会这样做?
答案 0 :(得分:1)
是的,这是可能的:
var response = UrlFetchApp.fetch(urlFromCell).getHTTPHeaders().getResponseCode();
但请注意,如果自定义函数放在第2列的每个相邻单元格中,那么它们会在每次更改工作表时重新计算。
这会很快通过your quota for fetch calls吃掉。尽管每天有20,000个电话,但如果在一天内发生66次更新,则会发生这种情况。
更好的方法是在按下按钮或菜单命令调用时使用单个命令来处理整个列 - 这仍然是300个单独的调用,这些调用可能会达到6分钟的执行时间限制,因为它们将同步发生。
答案 1 :(得分:0)
感谢Jonathan,
我在下面的函数" LinkTest()"中克隆了你的代码片段,虽然我发现提前输入向导没有提供getHTTPHeaders,每个" LinkTest2()"。然而,我有点困惑,正如我所期待的那样#34;回应"在所有情况下都显示响应代码的实际值,而不仅仅是200.每当我浏览到一个错误的链接时,我会得到一个403,404或410。但是,在这些情况下,函数只返回了#### ERROR"。进一步挖掘(here)揭示了" muteHttpExceptions"属性。当设置为" true"时,它会产生所需的结果。
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;
}
返回: