GASのアロー関数の使い方!記述パターンや通常functionとの違い・使い分けを解説

Google Apps Script(GAS)では、2020年にV8ランタイムが採用されたことで、ES2015準拠となり、ECMAScript構文が使えるようになりました。

その中でモダンなJavascriptでよく使われるアロー関数について使い方、従来の通常functionで定義する関数との違いを解説します。

V8ランタイムのGASでアロー関数がサポート

Google Apps Script(GAS)は2020年12月にアップデートが行われ、V8ランタイムに対応しました。

V8ランタイムではJavascriptのES2015に準拠しているため、これまでのGASでは利用できなかった様々な機能が用意されました。

その中でも大きな機能の1つがアロー関数です。

アロー関数はGASのベースとなっているJavascriptでもよく使われるため、使いこなせるようになると色々なシーンで活用できます。

アロー関数は書き方が特殊

アロー関数はJavascriptではよく利用されているものの、これまで利用してきた通常の関数に比べ、かなり書き方が異なっています。

パターンに応じて省略できる部分が複数あり、同じアロー関数でも記述方法が違います。

それゆえにプログラミング初心者からすると、理解しづらいハードルの高い存在です。

そこで、アロー関数の書き方について基本となる記述方法をベースに省略パターンを列挙して解説します。

GASのアロー関数の基本的な書き方

Google Apps Script(GAS)でのアロー関数を記述する方法は以下の通りです。

(引数1, 引数2) => {
  //処理を記述
  return 戻り値
}

関数リテラルよりもアロー関数のほうが記述するコード量が少なくなります。

関数リテラルのように変数の定義に代入する形で利用するケースが多く、以下のサンプルコードのような書き方をします。

さらに、上記のアロー関数の基本構文から、さらに記述を省略して、シンプルに記述可能です。

アロー関数の記述省略パターン

アロー関数の省略パターンは以下2パターンがあります。

  1. 引数が1つの場合、()丸括弧が省略可能
  2. アロー関数内の処理がreturn文の1行のみの場合、{}中括弧とreturnが省略可能

Google Apps Script(GAS)のスクリプトエディタで、アロー関数の基本構文と省略形をまとめたサンプルコードを紹介します。

const arrow0 = (val) => console.log('アロー関数');

function testArrowFunction() {
  console.log(arrow0());
  //最も標準的なアロー関数の記述方法
  const arrow1 = (val) => {
   return val**2
  };
  console.log(arrow1(16));

  //引数が1つの場合、()カッコが省略可能
  const arrow2 = val => {
   return Math.sqrt(val)
  };  
  console.log(arrow2(16));

  //処理が1行の場合は{}中括弧とreturnが省略可能
  const arrow3 = (val1,val2) => Math.sqrt(val1**2 + val2**2);
  console.log(arrow3(3,4));

  //仮引数がない場合は()を省略することはできない
  const arrow4 = () => Math.PI ;
  console.log(arrow4());
}

実際に4つのアロー関数をログ出力するGASサンプルコードを実行すると、実行ログに4つが表示されます。

どの書き方でもアロー関数として認識され、想定どおりの実行結果が出力されます

アロー関数と通常関数の違い・使い分けは?

通常の関数(関数リテラル)の場合、function文を使って関数の宣言を行います。

それに対し、アロー関数ではfunction文は必要ありません。

機能的な面で通常のfunction文で宣言した関数とアロー関数に違いはありません。

ただ、アロー関数を使うことで通常の関数よりも記述量を少なくして、コード量を減らすことができます。

GASでアロー関数を使う際の注意点

Google Apps Script(GAS)でアロー関数を使う際の注意点として、まず「V8ランタイムが有効になっているか」確認することです。

現在、新しいGASプロジェクトを作成した場合には、デフォルトでV8ランタイムが有効になっています。

しかし、2020年以前のGASではV8ランタイムが無効になっていることがあり、その場合、アロー関数が認識されず、スクリプト保存時に「構文エラー: Syntax error. 行: *」と表示されます。

そのため、アロー関数を使う際には、当該GASプロジェクトがV8ランタイム有効かプロジェクト設定画面から確認し、無効の場合はチェックを入れて有効にしましょう。

また、会社や組織でGASを利用しており、複数人で開発している場合、メンバーでアロー関数の使い方のルールを統一しましょう。

ネット上にあるGASのコードの多くはまだまだアロー関数が利用しているものが少ないです。

そんな中、アロー関数に対する理解が開発メンバー間に差異がある状態だと、使い方が異なるようになります。

省略可能なパターンで省略する書き方をする人と、常に基本パターンで省略せずに書く人がいると、保守性が低下します。

そのため、チーム内でしっかりアロー関数の認識を揃え、省略パターンの対応ケースをルール化しておきましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)で利用できるアロー関数の基本的な構文と省略記法について紹介しました。

2020年にGASがV8ランタイムにアップデートされて、ES2015のアロー関数が利用できるようになりました。

アロー関数は通常の関数との記述方法が異なる点や省略パターンがあるため、GAS初心者には読みづらいです。

しかし、省略パターンをしっかり理解しておけば、アロー関数だと識別し、動作が理解できるようになります。

アロー関数を使うことで、GASスクリプトのコード量を減らすことが可能です。

GASコードではアロー関数を使っているケースはまだ少ないですが、ぜひアロー関数がどういった書き方か、通常関数との違いを覚えておきましょう。