2

我試圖重新構建COUNTIFS作爲谷歌腳本自定義函數,並遇到了一件事情:如何構建一個接受任意數量參數的函數?在Google腳本自定義函數中接受任意數量的參數?

如果你在谷歌牀單使用COUNTIFS,輸入如下所示:

=COUNTIFS(criteria_range1, criterion1, [criteria_range2, criterion2, ...]) 

我的谷歌腳本可以這樣:

function COUNTIFS(criteria_range1, criterion1){ 
    // CountIFS code 
} 

...但我如何才能可選參數在我的功能?

回答

5

傳遞給函數的參數個數是可變的時,可以引用arguments object

+0

它仍然只能說明當我打電話在谷歌文檔的功能所需要的參數。這裏是他們描述這種機制的地方:https://developers.google.com/apps-script/guides/sheets/functions#autocomplete – bumpkin 2014-10-29 22:53:57

+0

嘗試例如'函數numberOfArguments(){返回arguments.length;}'並調用自定義函數在具有不同數量參數的單元格中。 – AdamL 2014-10-29 23:04:51

+0

哦,如果你指的是自動完成信息,那麼指定可選參數的方式並不是一種簡潔的方式(不過你可以在@param描述中包含這些信息)。 – AdamL 2014-10-29 23:07:00

2

(例如支持AdamL的答案。)

自動完成功能的自定義功能的濫用jsdoc標籤幾分。通常用大括號括起來的「參數類型」,例如{String}在函數幫助的「示例」部分逐字使用,而參數名稱在快速幫助中使用。

您可以利用這一點來闡明具有任意參數的函數,如下所示。

screenshot

代碼

/** 
* Calculate the driving distance along a route. 
* 
* @param {"london","manchester","liverpool"} 
*     route Comma separated ordered list of two or more map 
*       waypoints to include in route. First point 
*       is 'origin', last is 'destination'. 
* 
* @customfunction 
*/ 
function drivingDistance(route) { 
    if (arguments.length < 2) throw new Error("Must have at least 2 waypoints.") 
    var origin = arguments[0]; 
    var destination = arguments[arguments.length-1]; 
    ... 
相關問題