bumpkin
bumpkin

Reputation: 3469

Accept Arbitrary Number of Arguments in Google Scripts Custom Function?

I'm trying to re-build COUNTIFS as a Google Scripts Custom Function and having trouble with one thing: how do I build a function that accepts an arbitrary number of arguments?

If you use COUNTIFS in google sheets, the inputs look like this:

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

My Google Script can be this:

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

...but how do I get the optional arguments in my function?

Upvotes: 6

Views: 5931

Answers (2)

Mogsdad
Mogsdad

Reputation: 45750

(Example to support AdamL's answer.)

The autocomplete feature for custom functions abuses jsdoc tags somewhat. The "parameter type" which is normally enclosed in braces, e.g. {String}, is used verbatim in the "Example" section of the function's help, while the parameter name is used in the quick-help.

You can take advantage of this to clarify functions with arbitrary parameters, as shown here.

screenshot

Code

/**
 * 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];
  ...

Upvotes: 4

AdamL
AdamL

Reputation: 24619

You can reference the arguments object when the number of arguments passed to a function is variable.

Upvotes: 9

Related Questions