[GAS] 関数の引数を省略・デフォルト値を設定

2019-08-14JavaScriptGAS

Google Apps Script ( GAS ) で引数を省略して、デフォルト値を設定したいときの書き方。
JavaScript ベースなので、デフォルト引数が使えると思って書いたら、エラーになってファイル保存ができなかった。
GAS では JavaScript にあるデフォルト引数は使えないので、引数があるか関数内でチェックしてからデフォルト値をセットする。

関数のデフォルト引数

JavaScript だと、関数の引数が省略された場合などに、初期化するためのデフォルト値を引数にセットするができる。
ただし、IE では対応していない。

function myFunction(para1, para2 = 10){
	console.log("para1: " + para1);
	console.log("para2: " + para2);
}
myFunction(1);   // line 1
myFunction(1, 100);   // line 2
// 出力結果
para1: 1
para2: 10
para1: 1
para2: 100

para2 = 10 がデフォルト引数。
line 1 で第二引数を省略して関数を呼び出すと、デフォルト値の 10 が出力される。
line 2 のように関数呼び出し時に引数を渡すと、その値(ここでは 100 )が使われる。

GAS で引数のデフォルト値をセットする

GAS で、デフォルト引数を書くと、ファイル保存時にこんなエラーがでる。
仮パラメータの後に ) がありません。(行 1、ファイル「コード」)

なので、引数があるか存在チェックを行い、引数がなければデフォルト値をセットする。
存在チェックのとき、引数がない場合は、 undefined と判定される。

function myFunction(para1, para2){
  if(!para2){
    para2 = 10;
  }
  Logger.log("para1 : " + para1);
  Logger.log("para2 : " + para2);
}
function run(){
  myFunction(1);
  myFunction(1, 100);
}
//function run() を実行したときのログ
 para1 : 1
 para2 : 10
 para1 : 1
 para2 : 100

if(!para2) のとこは、 if(para2 === undefined) でもいい。

Posted by Agopeanuts