2017-07-26 37 views
1

這可能是一個愚蠢的問題,但我一直沒能找到GAS文檔中明確列出的區別,我想知道什麼是合格的腳本與自定義函數。我有一個Google表單,它需要一個功能在編輯時運行,以檢查輸入的值是否已經存在於另一個頁面上(許多行項目是通過複製/粘貼立即輸入的,並且當前腳本逐行進行以確定是否存在來自每行的唯一標識符已經存在於其他兩張紙張中的一張上,在刪除任何重複的情況下)。我從onEdit()調用這個函數,平均而言,它似乎需要30-40秒才能運行。GAS中的腳本和自定義函數有什麼區別?

這是我遇到了我的問題,作爲一個自定義函數運行的時間限制爲30秒,而腳本可以運行5分鐘。我應該計劃讓我的數據集增長,因此需要將此過程作爲腳本運行,以便在中途不會中斷。我認爲onEdit()和你從它調用的任何東西都被限定爲腳本而不是自定義函數,但顯然情況並非如此。你如何製作一個腳本和一個函數?

編輯:不知道爲什麼,但創建一個手動觸發調用onEdit上的編輯似乎運行它作爲一個腳本,而這是建立在被稱爲自定義函數的隱含onEdit電話。這解決了我眼前的問題,但如果有人對我的差異有所解釋,我仍然非常感謝!

回答

2

主要區別在於自定義功能通過在電子表格中輸入=functionName()進入單元格來調用。此外,自定義函數必須返回一個值以顯示在單元格中。請參閱Google Documentation

上面鏈接的文檔中的以下示例是自定義函數的示例。通過在電子表格的單元格中輸入(例如)=DOUBLE(5)來調用自定義函數。該函數運行input參數(5)並乘以2,它將返回答案(10)並在電子表格單元格中顯示該值。

function DOUBLE(input) { 
    return input * 2; 
} 

但是,你onEdit()功能是由觸發的方式被稱爲是一件簡單的觸發,觸發設置,自定義菜單按鈕或在腳本編輯器運行按鈕,它並不需要一個值返回到主要功能。

如果您嘗試=onEdit()輸入到您的電子表格單元格中的功能將不會運行,你會在細胞收到一個錯誤。

相關問題