【GAS】配列操作を極める:基本から応用まで
Google Apps Script(GAS)は、Googleの各種サービスを効率的に操作するための強力なツールです。特に、配列操作はスクリプトの中で非常に頻繁に使用されます。本記事では、GASでの配列操作に関する基本的なメソッドから、より高度な操作を可能にするメソッドまで、詳細に解説します。初心者の方にも理解しやすいように、各メソッドの使い方とともに例を紹介しますので、ぜひ参考にしてください。
配列の宣言
配列の宣言は、他のプログラミング言語と同様に非常にシンプルです。以下のように記述します。
// 空の配列を宣言
const array = [];
// 初期値を持つ配列を宣言
const fruits = ["Apple", "Banana", "Cherry"];
解説
-
空の配列:
const array = [];
は、空の配列を宣言します。何も要素が含まれていない状態です。 -
初期値を持つ配列:
const fruits = ["Apple", "Banana", "Cherry"];
は、3つの要素を持つ配列を宣言します。この場合、配列にはすでに "Apple", "Banana", "Cherry" が含まれています。
配列への要素追加
配列に要素を追加するには、push
メソッドを使用します。
const fruits = ["Apple", "Banana"];
fruits.push("Cherry");
console.log(fruits); // ["Apple", "Banana", "Cherry"]
また、unshift
メソッドを使用すると、配列の先頭に要素を追加できます。
const fruits = ["Apple", "Banana"];
fruits.unshift("Cherry");
console.log(fruits); // ["Cherry", "Apple", "Banana"]
解説
-
push
メソッド: 配列の末尾に要素を追加します。例では、"Cherry" が末尾に追加されました。 -
unshift
メソッド: 配列の先頭に要素を追加します。例では、"Cherry" が先頭に追加されました。
配列からの要素削除
配列から要素を削除するには、pop
およびshift
メソッドを使用します。pop
は配列の最後の要素を削除し、shift
は最初の要素を削除します。
const fruits = ["Apple", "Banana", "Cherry"];
fruits.pop();
console.log(fruits); // ["Apple", "Banana"]
fruits.shift();
console.log(fruits); // ["Banana"]
解説
-
pop
メソッド: 配列の最後の要素を削除します。例では、"Cherry" が削除されました。 -
shift
メソッド: 配列の最初の要素を削除します。例では、"Apple" が削除されました。
配列の要素検索
配列の中から特定の要素を検索するには、indexOf
およびincludes
メソッドを使用します。
const fruits = ["Apple", "Banana", "Cherry"];
const index = fruits.indexOf("Banana");
console.log(index); // 1
const hasApple = fruits.includes("Apple");
console.log(hasApple); // true
解説
-
indexOf
メソッド: 配列内の特定の要素の位置(インデックス)を返します。要素が見つからない場合は -1 を返します。例では、"Banana" のインデックスは 1 です。 -
includes
メソッド: 配列に特定の要素が含まれているかどうかをチェックします。例では、"Apple" が含まれているため、true が返されました。
配列の長さ取得
配列の長さを取得するには、length
プロパティを使用します。
const fruits = ["Apple", "Banana", "Cherry"];
const length = fruits.length;
console.log(length); // 3
解説
-
length
プロパティ: 配列の要素数を返します。例では、3 つの要素が含まれているため、3 が返されました。
配列の逆転
配列の順序を逆転させるには、reverse
メソッドを使用します。
const fruits = ["Apple", "Banana", "Cherry"];
fruits.reverse();
console.log(fruits); // ["Cherry", "Banana", "Apple"]
解説
-
reverse
メソッド: 配列の要素の順序を反転させます。例では、元の配列 ["Apple", "Banana", "Cherry"] が ["Cherry", "Banana", "Apple"] に逆転されました。
配列の結合
複数の配列を結合するには、concat
メソッドを使用します。
const fruits = ["Apple", "Banana"];
const moreFruits = ["Cherry", "Date"];
const allFruits = fruits.concat(moreFruits);
console.log(allFruits); // ["Apple", "Banana", "Cherry", "Date"]
解説
-
concat
メソッド: 複数の配列を結合し、新しい配列を作成します。元の配列は変更されません。例では、["Apple", "Banana"] と ["Cherry", "Date"] が結合されて、["Apple", "Banana", "Cherry", "Date"] という新しい配列が作成されました。
スプレッド構文を使用する配列の結合
スプレッド構文を使用すると、簡単に複数の配列を結合することができます。
const fruits = ["Apple", "Banana"];
const moreFruits = ["Cherry", "Date"];
const allFruits = [...fruits, ...moreFruits];
console.log(allFruits); // ["Apple", "Banana", "Cherry", "Date"]
const fruits = ["Apple", "Banana"];
const moreFruits = ["Cherry", "Date"];
fruits.push(...moreFruits);
console.log(fruits); // ["Apple", "Banana", "Cherry", "Date"]
解説
-
スプレッド構文: 配列やオブジェクトの要素を展開する構文です。
...
を使って他の配列の要素を展開し、新しい配列を作成します。
slice
メソッド
配列の一部を抽出する slice
メソッドは、配列の一部を抽出して新しい配列を作成します。元の配列は変更されません。
使用方法
const fruits = ["Apple", "Banana", "Cherry", "Date"];
const slicedFruits = fruits.slice(1, 3);
console.log(slicedFruits); // ["Banana", "Cherry"]
解説
-
slice
メソッドは、開始位置と終了位置(終了位置は含まない)を指定して、指定された範囲の要素を抽出します。 - 例では、インデックス1からインデックス3までの要素が抽出され、新しい配列["Banana", "Cherry"]が作成されます。
splice
メソッド
配列の要素を削除・追加する splice
メソッドは、配列の指定した位置にある要素を削除したり、そこに新しい要素を追加したりできます。
使用方法
const fruits = ["Apple", "Banana", "Cherry", "Date"];
fruits.splice(2, 1, "Blueberry", "Cantaloupe");
console.log(fruits); // ["Apple", "Banana", "Blueberry", "Cantaloupe", "Date"]
解説
-
splice
メソッドは、開始位置と削除する要素数、追加する要素を指定します。 - 例では、インデックス2から1つの要素("Cherry")が削除され、その位置に"Blueberry"と"Cantaloupe"が追加されました。
map
メソッド
配列の各要素に関数を適用する map
メソッドは、配列の各要素に対して関数を適用し、その結果を新しい配列として返します。
使用方法
const numbers = [1, 2, 3, 4];
const doubledNumbers = numbers.map(function(number) {
return number * 2;
});
console.log(doubledNumbers); // [2, 4, 6, 8]
解説
-
map
メソッドは、配列の各要素に対して指定された関数を適用し、その結果を新しい配列として返します。 - 例では、各要素に2を掛けた結果の配列 [2, 4, 6, 8] が作成されました。
filter
メソッド
条件に合致する要素を抽出する filter
メソッドは、配列の中から条件に合致する要素だけを抽出して新しい配列を作成します。
使用方法
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(evenNumbers); // [2, 4]
解説
-
filter
メソッドは、各要素に対して指定された条件をチェックし、条件に合致する要素を新しい配列として返します。 - 例では、偶数の要素だけを抽出して [2, 4] という新しい配列が作成されました。
もちろん、配列の操作に役立つその他のメソッドについても解説します。以下に、よく使用される配列メソッドをいくつか紹介します。
forEach
メソッド
forEach
メソッドは、配列の各要素に対して関数を一度ずつ実行します。
使用方法
const fruits = ["Apple", "Banana", "Cherry"];
fruits.forEach(function(fruit, index) {
console.log(index + ": " + fruit);
});
// 出力:
// 0: Apple
// 1: Banana
// 2: Cherry
解説
-
forEach
メソッド: 配列の各要素に対して指定された関数を実行します。関数は、要素、インデックス、配列全体の3つの引数を受け取ることができます。
find
メソッド
find
メソッドは、配列の中から条件に合致する最初の要素を返します。
使用方法
const numbers = [1, 2, 3, 4, 5];
const found = numbers.find(function(number) {
return number > 3;
});
console.log(found); // 4
解説
-
find
メソッド: 条件に合致する最初の要素を返します。条件に合致する要素が見つからない場合はundefined
を返します。
findIndex
メソッド
findIndex
メソッドは、配列の中から条件に合致する最初の要素のインデックスを返します。
使用方法
const numbers = [1, 2, 3, 4, 5];
const index = numbers.findIndex(function(number) {
return number > 3;
});
console.log(index); // 3
解説
-
findIndex
メソッド: 条件に合致する最初の要素のインデックスを返します。条件に合致する要素が見つからない場合は -1 を返します。
some
メソッド
some
メソッドは、配列の中に条件に合致する要素が少なくとも一つ存在するかどうかをチェックします。
使用方法
const numbers = [1, 2, 3, 4, 5];
const hasEvenNumber = numbers.some(function(number) {
return number % 2 === 0;
});
console.log(hasEvenNumber); // true
解説
-
some
メソッド: 条件に合致する要素が少なくとも一つ存在するかどうかをチェックします。条件に合致する要素が見つかった場合はtrue
を、見つからなかった場合はfalse
を返します。
every
メソッド
every
メソッドは、配列の全ての要素が条件に合致するかどうかをチェックします。
使用方法
const numbers = [2, 4, 6, 8];
const allEven = numbers.every(function(number) {
return number % 2 === 0;
});
console.log(allEven); // true
解説
-
every
メソッド: 配列の全ての要素が条件に合致するかどうかをチェックします。全ての要素が条件に合致する場合はtrue
を、そうでない場合はfalse
を返します。
reduce
メソッド
reduce
メソッドは、配列の各要素に対して指定された関数を実行し、その結果を一つの値として返します。
使用方法
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(sum); // 10
解説
-
reduce
メソッド: 配列の各要素に対して指定された関数を実行し、その結果を一つの値として返します。関数は、累積値、現在の要素、インデックス、配列全体の4つの引数を受け取ることができます。第二引数として初期値を設定できます。
sort
メソッド
sort
メソッドは、配列の要素をソートします。
使用方法
const fruits = ["Banana", "Apple", "Cherry"];
fruits.sort();
console.log(fruits); // ["Apple", "Banana", "Cherry"]
const numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
解説
-
sort
メソッド: 配列の要素をソートします。デフォルトでは、要素を文字列としてソートします。数値のソートには、比較関数を指定する必要があります。
join
メソッド
join
メソッドは、配列の全ての要素を文字列として連結し、新しい文字列を作成します。
使用方法
const fruits = ["Apple", "Banana", "Cherry"];
const fruitString = fruits.join(", ");
console.log(fruitString); // "Apple, Banana, Cherry"
解説
-
join
メソッド: 配列の全ての要素を文字列として連結し、新しい文字列を作成します。引数として指定された文字列を各要素の間に挿入します。
まとめ
今回は、GASでの配列操作に関する基本から応用まで、さまざまなメソッドを紹介しました。これらのメソッドを理解し活用することで、効率的なスクリプト作成が可能になります。以下に各メソッドの特徴をまとめます。
- 宣言: 空の配列や初期値を持つ配列を作成。
-
追加:
push
で末尾に、unshift
で先頭に要素を追加。 -
削除:
pop
で末尾を、shift
で先頭を削除。 -
検索:
indexOf
で位置を、includes
で存在をチェック。 -
長さ:
length
プロパティで要素数を取得。 -
逆転:
reverse
で順序を反転。 -
結合:
concat
で配列を結合。 -
抽出:
slice
で一部を抽出。 -
削除・追加:
splice
で指定位置の要素を削除・追加。 -
変換:
map
で各要素に関数を適用。 -
フィルタ:
filter
で条件に合致する要素を抽出。 -
forEach
: 各要素に対して関数を一度ずつ実行 -
find
: 条件に合致する最初の要素を返す -
findIndex
: 条件に合致する最初の要素のインデックスを返す -
some
: 条件に合致する要素が少なくとも一つ存在するかチェック -
every
: 全ての要素が条件に合致するかチェック -
reduce
: 各要素に対して関数を実行し、その結果を一つの値として返す -
sort
: 要素をソート -
join
: 全ての要素を文字列として連結
これらのメソッドを駆使して、効率的でパワフルなスクリプトを作成しましょう。
Discussion