GASの配列の要素の並び順を逆転させる方法(reverseメソッド)

2021年7月21日

Google Apps Script(GAS)で配列を扱っていると、要素の並びを逆順に並び替えたいことがあります。

そこで、GASの配列の要素を簡単に逆転させる方法を解説します。

GASの配列の要素を逆順に

Google Apps Script(GAS)では、スプレッドシートや各種APIから値を取得する際、よく配列に値を格納します。

値を格納する変数よりも配列の方がデータをforループなどで繰り返し処理できるからです。

APIから値を取得した際に、配列の要素の並び替えたい場合があります。

reverseメソッドで配列要素を逆転

Google Apps Script(GAS)には、配列の要素の順番を逆転するためのメソッドが用意されています。

JavaScriptでも配列のArrayクラスで利用可能なreverseメソッドです。

Array.reverse()

reverseメソッドを実行すると、配列の要素の順番を逆転した配列を取得することができます。

GASの配列要素を逆順にするサンプルコード

実際にGoogle Apps Script(GAS)でreverseメソッドを利用して、配列要素の順番を逆順にするサンプルコードを紹介します。

果物の名前を格納した1次元配列を定義したあと、reverseメソッドを実行して要素の並びを逆転させます。

function myFunction() {
  //1次元配列を定義
  let fruits = ["りんご", "みかん", "いちご"];
  //要素の順番を実行ログで確認
  console.log(fruits);
  //reverseメソッドで要素を逆順に変更
  fruits = fruits.reverse();
  //再度、要素の順番を実行ログで確認
  console.log(fruits);
}
Google Apps Script(GAS)の配列で、要素を逆順に逆転させるreverseメソッドのサンプルコード

実行ログで出力される配列の要素の並びが、最初とreverseメソッドを利用した後では逆転していることが分かります。

このようにGASでreverseメソッドを配列で使用すると、要素の順番を逆順に入れ替えることができます。

GASの2次元配列でreverseメソッドで逆転すると?

先程Google Apps Script(GAS)のサンプルコードで紹介したのは、1次元配列をreverseメソッドで要素の順番を逆転させました。

では、2次元配列でもreverseメソッドを使用できるのでしょうか。

実は2次元配列でもreverseメソッドを実行することは可能です。

Google Apps Script(GAS)の2次元配列でreverseメソッドを実行したことで、要素の順番を逆転可能に

2次元配列でreverseメソッドを実行すると、1次元目(行方向)に要素の順番が逆順になります。

ただ、2次元目(列方向)の要素については逆転されません。

もし、2次元目の要素順を逆にしたい場合は、1次元目を指定した上で、reverseメソッドを実行します。

例えば、サンプルコードの2次元配列animalで、2番目の並びを逆順にする場合、以下のようにコードを記述します。

animal[1] = animal[1].reverse();

以上から、GASでは2次元配列でもreverseメソッドによる要素の順番を逆転させることが可能です。

スプレッドシートに配列書き込み

Google Apps Script(GAS)で要素の順番を逆順にするメリットとしてはスプレッドシートへの配列書き込みです。

スプレッドシートの複数範囲のセルに値を書き込む場合、setValuesメソッドで2次元配列を指定して書き込みます。

ただ、セルの書き込む位置を逆順にしたい場合、書き込む前に2次元配列で順番を逆転しておけば、あとで変更する手間が不要です。

そうした点から、スプレッドシートで2次元配列を出力する際に、逆順で並べたい場合にreverseメソッドが有用です。

まとめ・終わりに

今回、Google Apps Script(GAS)で配列の要素を逆順に並び替える方法を紹介しました。

そのまま配列要素を逆転させようとすると、forループなどで並び替え処理を実装する必要があります。

しかし、reverseメソッドを利用すれば、1行のコード配列の要素を逆順にすることが可能です。

最終的なアウトプットを元々のデータと順番を逆転させたい場合に、reverseメソッドが便利です。

GASで配列の要素の順番を逆転させたい場合に、今回紹介したreverseメソッドを活用しましょう。