GASの配列を分割代入する方法!2次元配列含め要素を複数変数に一括代入

2023年6月25日

Google Apps Script(GAS)の配列要素を複数の変数や定数に代入して利用したいシーンがあります。

そんな時に便利なのが分割代入で、一度に複数の変数に配列要素を代入可能です。

GASで分割代入を使う方法を解説します。

GASで配列要素を変数に代入したい

Google Apps Script(GAS)のコードを書いていると、配列の要素を変数に代入したいケースがあります。

スプレッドシートやAPIなどから取得した配列データはそのままで、別途処理したい場合です。

そうした配列の複数要素をそれぞれ変数に代入すると、下記のようなGASコードになります。

function myFunction() {
  const array = ['りんご','みかん','いちご'];
  let a,b,c;
  //複数の変数に配列要素をそのまま代入すると
  a = array[0];
  b = array[1];
  c = array[2];
  //各変数の値をログ出力
  console.log(a);
  console.log(b);
  console.log(c);
}
Google Apps Script(GAS)で1次元配列の各要素を変数に代入するサンプルコード

配列の3つの要素をそれぞれ変数に代入する処理を記述しています。

内容的には問題ないですが、変数が増えた場合やコードの規模が大きくなると行数を増やす要因となります。

複数の変数に配列代入するなら分割代入

Google Apps Script(GAS)のコード行数を少なくしたい場合におすすめなのが分割代入です。

分割代入を使えば、3つの変数にそれぞれ配列要素を代入するのにコードの記述量は1行で済みます。

GASにおける分割代入の文法は以下の通りです。

[変数1,変数2,…,変数n] = 配列;

実際にさきほどの個々の変数に配列要素を代入していたコードを分割代入による記述で置き換えてみます。

function myFunction() {
  const array = ['りんご','みかん','いちご'];
  let a,b,c;
  //分割代入を使うと1行で代入処理が可能
  [a,b,c] = array;
  //各変数の値をログ出力
  console.log(a);
  console.log(b);
  console.log(c);
}
Google Apps Script(GAS)で1次元配列の要素を一括で複数の変数に分割代入するサンプルコードと実行結果

実行結果は同じ結果になっていますが、分割代入を使うことで3行→1行に削減できています。

分割代入を知らない人は、見慣れぬ記述で戸惑うこともありますが、慣れてくるとスッキリして見えます。

今回は3つの変数に対して配列要素は3個でしたが、(変数の個数)<(配列要素)だと、配列の先頭から変数の指定順に配列要素が割り当てることも可能です。

2次元配列も分割代入が可能

先程のGoogle Apps Script(GAS)の分割代入のサンプルコードは1次元配列でした。

しかし、1次元配列以外にも2次元配列でも分割代入を利用することができます。

実際に2次元配列の要素を分割代入で変数に割り当ててみます。

function myFunction() {
  //分割代入する2次元配列
  const array = [
    ['りんご','みかん','いちご'],
    ['ぶどう','マスカット','レモン'],
    ['すいか','メロン','もも']
  ];
  let a,b,c;
  //2次元配列でも分割代入が可能
  [a,b,c] = array;
  //各変数の値をログ出力
  console.log(a);
  console.log(b);
  console.log(c);
}
Google Apps Script(GAS)の分割代入では、1次元配列だけでなく2次元配列も分割代入可能

2次元配列を分割代入したところ、個々の変数に1次元配列が代入されました。

2次元配列の1つ目の添字を指定すれば、任意の行の配列要素を値として分割代入も可能です。

function myFunction() {
  //分割代入する2次元配列
  const array = [
    ['りんご','みかん','いちご'],
    ['ぶどう','マスカット','レモン'],
    ['すいか','メロン','もも']
  ];
  let a,b,c;
  //2次元配列でも分割代入が可能
  [a,b,c] = array[1];
  //各変数の値をログ出力
  console.log(a);
  console.log(b);
  console.log(c);
}
Google Apps Script(GAS)の分割代入で2次元配列の1つ目の添字を指定して、配列の値を分割代入するサンプルコード

このように2次元配列であっても、分割代入することができます。

分割代入でGASコード行数を削減

分割代入を利用する最大のメリットはコードの行数を減らせる点です。

配列要素の値を代入したい数が多いほどGoogle Apps Script(GAS)のコードの行数が増えます。

分割代入であれば、各変数ごとに代入していた処理を一括で代入可能です。

通常の変数の代入に比べ、GAS初学者には分割代入が分からず困ることもあります。

しかし、100行を超えるGASコードを書いている場合には行数を減らせると助かります。

チームなど複数人でGASコードをメンテンス・保守している場合は、各人のスキルに応じて選択しましょう。

変数の入れ替えも簡単に

分割代入が最も役に立つのは変数の入れ替えです。

プログラミング初期学習で必ず習う変数の入れ替えでは、入れ替える変数とは別にtempのような入れ替える値を一時的に保持する変数を使います。

しかし、分割代入を使えば、temp変数を使わずにたった1行で変数の入れ替えが可能です。

変数の入れ替えを行う機会はGoogle Apps Script(GAS)プログラムでは少ないですが、シンプルになるのでオススメです。

まとめ・終わりに

今回、Google Apps Script(GAS)の配列要素を複数の変数に一括代入する「分割代入」を紹介しました。

分割代入を使うと、いちいち変数ごとに配列要素を代入していたのが、1行で一度に代入することができます。

分割代入できるのは1次元配列だけでなく、2次元配列でも可能です。

さらに、変数の入れ替えをする場合は非常にスッキリした形でコードを書くことができます。

最初のうちは個別の変数に配列要素を代入する形で問題ありませんが、少しGASの理解が進んできたら、ぜひ分割代入を使ってコード数を少なくシンプルな記述をしてみましょう。