Google Apps Script(GAS)のインクリメントi++と++iの違いを解説

Google Apps Script(GAS)では、処理の回数に応じて変数の数字をカウントアップするインクリメントがあります。

インクリメントには、①i++、②++iの2種類がありますが、この2つのインクリメントの挙動の違いを解説します。

インクリメント(デクリメント)とは

インクリメントは数値型の変数を1足す処理を意味します。

C言語やJava、Javascriptなど一般的なプログラミング言語では必ず利用可能な記述することができます。

インクリメントの記述方法は、基本的にどのプログラミング言語でも共通で、変数iの場合、以下のような2パターンの記述方法があります。

  1. i++;
  2. ++i;

また、1を加えるインクリメントとは逆に1を減らすデクリメントという処理もあります。

デクリメントもインクリメントと同じ書き方ですが、使う符号が+ではなく、-(マイナス)で以下のように表現します。

  1. i–;
  2. –i;

インクリメントはGASスクリプトでも多用

インクリメント処理はよくGoogle Apps Script(GAS)でもよく用いられます。

GASで何かの処理を行なった後にインクリメント(例:i++)で1加えることで処理回数を数えることができ、最終的に何回実行したか確認することができます。

計算問題を解く場合に、インクリメントした変数を計算に適用して計算問題を算出するGASのコードを組み立てます。

このようにインクリメントはGASのコードを書く際に利用頻度が高いです。

Google Apps Scriptのi++と++iのインクリメントの挙動の違い

ただ、冒頭で紹介した通り、Google Apps Script(GAS)のインクリメントには、他のプログラミング言語同様に①i++と②++iの2種類があります。

この2つのインクリメントは、使っている符号も似ていて、+記号の位置が違うだけですが、微妙に挙動が異なります。

そこで、GASのインクリメント(i++,++i)の挙動の違いを解説します。

初期値i=0の変数に対し、console.logでi++と++iの結果をログ出力したGASのサンプルコードを用意しました。

このGASサンプルコードを実行すると、コメントで書いた通りのログが出力されます。

合計5回のログ表示が出力され、2回目がi++、4回目が++iです。

i++と++iのインクリメントでは処理の優先順位が異なるため、ログ出力の結果に違いが生じています。

i++のインクリメントの場合、console.logのログ表示と1足す処理ではログ出力が優先されます。

インクリメントの1を足す前のiの値がログ出力されるため、iは初期値の「0」のまま表示されます。

「0」とログ出力された後にインクリメント(+1)されるため、3回目のiをログ表示すると「1」と表示されます。

次に++iのインクリメントの場合は、console.logのログ表示よりも1足す処理が優先されます。

そのため、i=1の変数にインクリメント(+1)された後、ログ出力されるため、「2」が表示されます。

そして++iの場合はログ出力時点で1足すのが完了しているため、再度iをログ出力しても「2」のまま表示されます。

このように同じインクリメントであるi++と++iでは、1足す処理の優先順位が異なるため、微妙に挙動が変化します。

※このインクリメントの挙動はGASだけでなく、JavascriptやC言語でも同様です。

GASのデクリメント(i–と–i)の違いも同様

なお、インクリメントと同じようにデクリメント(i–と–i)も同様に挙動が異なります。

インクリメントと同じようにconsole.logのログ出力で、初期値i=10の変数でデクリメントの挙動の違いをサンプルスクリプトで試してみました。

i++と同様にi–も1引くタイミングがログ出力よりも後なので、表示は10のままです。

その後、ログ出力3回目でiを表示すると、デクリメントが実行されているので、9と表示されます。

–iはログ出力よりも1引く処理が優先されるため、8と表示され、その後iを表示しても8のままです。

このようにGASではデクリメントもインクリメントと同様の優先順位で1引く処理が実行されます。

まとめ・終わりに

今回、Google Apps Script(GAS)におけるインクリメントの2種類①i++と、②++iの挙動の違いを解説しました。

インクリメントは++の符号の位置によって、1足すタイミングが異なります。

単なる変数のカウントアップ処理だけであれば、どちらも同じですが、インクリメントのタイミングで他の処理を行なった際に、挙動が異なります。

あまり2つのインクリメント(デクリメント)の違いを意識する機会は少ないですが、理解しておくとよりプログラミングの理解が進むので、挙動として覚えておきましょう。