2015-12-21 53 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; 
} 

返回: