配列の検索方法色々~Google Apps Scriptを使って~

最終更新日:2026年8月5日

はじめに

項目 Google Apps Script Excel VBA Python
主な用途 Google Workspace自動化 Excel業務自動化 汎用自動化・データ分析
学習難易度 低(JavaScript系) 低〜中
実行環境 クラウド(無料) Windows/Excel必須 ローカル or クラウド
Googleサービス連携 最高 API経由で可

プログラムを学び始めると配列と呼ばれるものが出てきます。
配列まではわかったけど、多次元配列になると苦手意識を持っている方や、使用の用途がよくイメージできない方などもいらっしゃる方もいるかもしれません。
本記事では実際にプログラムを追いながら、配列の検索方法や特徴を見ていきます。
実際にプログラムを開発する場合、配列を目にすることはたくさんあります。
是非一読して頂き理解を深めてください。

配列とは

ご存じの方も多いかもしれませんが、簡単に説明しておくと、配列とは変数の集合体と考えることができます。
その変数は値を入れておく箱と考えることができますが、この箱が複数横並びにくっついているイメージです。
それぞれの箱は別もので、任意に箱の中身を取得したい場合は、番号を指定してあげます。この番号のことを「添え字」や「インデックス」と呼びます。また箱の中身を「要素」と呼びます。
上記で挙げた基本的な配列以外に「二次元配列」と呼ばれるものや、「連想配列」と呼ばれるものがあります。
「二次元配列」や「連想配列」はより複雑なデータ構造で要素を保持しますので、基本的な配列とは検索の仕方も異なってきます。
本記事では、基本的な配列、二次元配列、連想配列を順番に実際にコードを打ちながら説明していきます。
基本的な配列に関しては十分わかっている方は、二次元配列や連想配列から読んでみてください。

基本的な配列

ではさっそく配列検索してみましょう。
その前にGASでスクリプトを用意しましょう。
手順は以下になります。

1.Google Driveにログイン。

Google Driveにログインし新規でGoogle Apps Scriptプロジェクトを作成する画面

2.左上の「新規」から「その他」を押下。
3.「Google Apps Script」を選択します。
4.新規のプロジェクトが表示されます。

function myFunction() {

}

この波括弧の中にプログラムを書いていきます。
配列を宣言する場合は、以下のように宣言します。

var array = []

値を入れましょう。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
Logger.log(array);
}

結果は以下になります。
※ログを確認する場合は、Ctrl+enterを押します。

[ログ]
[20-10-06 19:40:40:511 PDT] [test1, test2, test3]

arrayの中に値が入っているのがわかります。
では、array配列の中を検索していきましょう。
今回はtest2を取得していきます。
以下のように記述します。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
Logger.log(array[1]);
}

結果は以下になります。

[ログ]
[20-10-07 11:42:33:459 JST] test2

無事test2が取得されています。
この時注意して欲しいのが、添字です。
「配列とは」で説明したように、配列を検索する時は、必ず添字を指定してあげる必要があります。
添え字の最初の番号は1ではなく0になります。
従ってtest1, test2, test3からtest2を指定する場合は、1となります。
検索からやや脱線しますが、ついでに配列の操作についても触れておきます。

配列を操作する方法

Shift

Shiftメソッドを使うと、配列の最初の要素を取得することができます。
取得した際に配列内から消えてしまいすので、削除したい場合にも使えます。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
var element = array.shift();
Logger.log(element);
}

[ログ]
[20-10-07 12:58:52:541 JST] test1

Pop

Popメソッドは逆に配列の最後を取得することができます。
取得した際に配列内から消えてしまいすので、削除したい場合にも使えます。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
var element = array.pop();
Logger.log(element);
}

[ログ]
[20-10-07 13:27:44:827 JST] test3

Length

Lengthプロパティを使うと配列の要素数が取得できます。
Lengthプロパティは配列の添え字にプラス1した数を返します。
ですので、ここでは3が返されます。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
var element = array.length;
Logger.log(element);
}

[ログ]
[20-10-07 13:38:14:952 JST] 3.0

⚠️ ログ表示について(現在との違い):上記のログに表示されている「3.0」は、本記事作成当時のGASが旧Rhinoランタイムで動作していたための表記です。GASは2020年にV8ランタイムがデフォルトとなっており、現在同じコードを実行すると数値は「3」のように整数のみで表示されます。コードの動作自体は当時から変わっていません。

for文(繰り返しを使った操作)

最後にfor文を使った検索方法を紹介します。
今回は配列の要素数のすべてを取得するパターンとしますが、for文内に条件などを追加することによって、様々な操作が可能となります。
良く使いますので、是非覚えておくと良いでしょう。

[コード]
function myFunction() {
var array = [100, 200, 300];

for (var i = 0; i < array.length; i++) {
Logger.log(array[i]);
}
}

[ログ]
[20-10-07 14:53:47:116 JST] 100.0
[20-10-07 14:53:47:118 JST] 200.0
[20-10-07 14:53:47:119 JST] 300.0

for文の繰り返しの条件に上記で使ったlengthプロパティを使っています。
先程言った通りlengthで取得される要素数は添え字に+1した形になりますので、漏れなくすべての要素を対象とすることが可能になります。

配列の基本的な検索方法や操作方法を学びました。
他にもUnshiftやPush、Mapなどのメソッドがあります。
次は配列そのものから「欲しい値」を直接探し出す、より実践的な検索メソッドを見ていきましょう。

配列の便利な検索メソッド(indexOf・includes・find・filter・some)

ここまでは添え字を指定して要素を取り出す方法を見てきましたが、実際の開発では「この値は配列の何番目にあるか」「この値は含まれているか」「条件に合う要素はどれか」を調べたい場面のほうが多くあります。
ここからは、そうした検索でよく使う5つのメソッドを、実際に動作するコードとともに紹介します。
いずれもGASの標準ランタイム(V8ランタイム)で問題なく利用できます。

indexOf(値が何番目にあるかを調べる)

indexOf()は、指定した値が配列の何番目(添え字)にあるかを返します。見つからない場合は-1が返ります。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
var index = array.indexOf(“test2”);
Logger.log(index);
}

[ログ]
1

「test2」はarray[1]の位置にあるため、1が返されます。

includes(値が含まれているかを調べる)

includes()は、値の位置ではなく「含まれているかどうか」をtrue/falseで返します。ES2016で追加されたメソッドです。

[コード]
function myFunction() {
var array = [“test1”, “test2”, “test3”];
var result = array.includes(“test2”);
Logger.log(result);
}

[ログ]
true

位置は不要で「含まれているか」だけを知りたい場合は、indexOf()の戻り値を-1と比較するより、includes()を使ったほうがコードの意図が明確になります。

find(条件に合う要素を1つ取得する)

find()は、コールバック関数の条件に一致した最初の1件を取得します。該当がなければundefinedが返ります。オブジェクトの配列から特定の1件を探す場合によく使います。

[コード]
function myFunction() {
var members = [
{name: “田中”, age: 25},
{name: “鈴木”, age: 30},
{name: “佐藤”, age: 28}
];
var result = members.find(function(member) {
return member.name === “鈴木”;
});
Logger.log(result);
}

[ログ]
{name=鈴木, age=30.0}

name(名前)が「鈴木」と一致する最初のオブジェクトが取得できています。

filter(条件に合う要素をすべて取得する)

filter()は、条件に一致するすべての要素を新しい配列として取得します。「基本的な配列」の章のfor文で書いた処理も、filter()を使うとより簡潔に書けます。

[コード]
function myFunction() {
var array = [10, 25, 30, 45, 50];
var result = array.filter(function(num) {
return num >= 30;
});
Logger.log(result);
}

[ログ]
[30.0, 45.0, 50.0]

30以上の要素だけが新しい配列として取得できています。アロー関数を使うと array.filter(num => num >= 30) のようにさらに短く書くこともできます。
なお、後述の「二次元配列」の章でfor文と条件分岐を使って性別を絞り込んでいる例も、filter()を使えば同様の考え方で書き換えられます。

some(条件に合う要素が1つでもあるかを調べる)

some()は、条件に一致する要素が配列内に1つでもあるかをtrue/falseで返します。全件を取得する必要はなく、存在確認だけしたい場合に使います。

[コード]
function myFunction() {
var array = [“apple”, “banana”, “cherry”];
var result = array.some(function(item) {
return item === “banana”;
});
Logger.log(result);
}

[ログ]
true

「banana」が配列内に存在するため、trueが返されます。

二次元配列

二次元配列は以下のように宣言します。

var array = [[],[]];

棒括弧の中に棒括弧を入れ子にして、カンマを挟んで設置します。
要素を入れてみましょう。

[コード]
function myFunction() {
var array = [[“りんご”,”バナナ”,”いちご”],[“きゅうり”,”トマト”,”レタス”],[“牛”,”豚”,”鳥”]];
Logger.log(array[0][1]); //
}

[ログ]
[20-10-07 15:18:37:254 JST] バナナ

二次元配列は、配列の中に、さらに配列がある「入れ子構造」になっています。
今回指定したarray[0][1]の[0]は大枠の配列の添え字を指定しています。

[“りんご”,”バナナ”,”いちご”]の果物を指定したい場合は、添え字0
[“きゅうり”,”トマト”,”レタス”]の野菜から指定したい場合は、添え字1
[“牛”,”豚”,”鳥”]の肉から指定したい場合は、添え字2

のようになります。

さらに次のarray[0][1]の[1]では野菜群の中の添え字1を指定し、バナナを取得しています。
二次元配列は、表データとの相性が良く、データベース等からデータを取得する場合などに使います。
GASでやった場合は以下になります。


二次元配列の説明に使うスプレッドシートの表データ

[コード]

function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getRange(2, 1, sheet.getLastRow() – 1,sheet.getLastColumn()).getValues();
console.log(data);
}

[ログ]

[20-10-06 23:40:19:982 PDT] [ [ ‘A太’, ‘東京’, ‘男’, ‘DOCOMO’ ],
[ ‘B男’, ‘東京’, ‘男’, ‘AU’ ],
[ ‘C子’, ‘神奈川’, ‘女’, ‘SOFTBANK’ ],
[ ‘D郎’, ‘東京’, ‘男’, ‘AU’ ],
[ ‘E次郎’, ‘神奈川’, ‘男’, ‘DOCOMO’ ],
[ ‘F美’, ‘東京’, ‘女’, ‘AU’ ],
[ ‘G助’, ‘千葉’, ‘男’, ‘SOFTBANK’ ],
[ ‘H子’, ‘千葉’, ‘女’, ‘DOCOMO’ ],
[ ‘I郎’, ‘東京’, ‘男’, ‘SOFTBANK’ ],
[ ‘Jアン’, ‘埼玉’, ‘男’, ‘DOCOMO’ ] ]

1行づつ配列になっており、その中に要素が格納された二次元配列になっているのが確認できます。
御覧の通り、上記のように表データを取得することができますので、ここから条件などを入れて、必要なデータを抽出したり、加工することができます。
試しに性別が「男」の人を抽出してみましょう。

[コード]
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getRange(2, 1, sheet.getLastRow() – 1,sheet.getLastColumn()).getValues();
for(let i = 0; i < data.length; i++) {
if(data[i][2]===”男”){
console.log(data[i]);
}
}
}

[ログ]
[20-10-07 16:21:00:673 JST] [ ‘A太’, ‘東京’, ‘男’, ‘DOCOMO’ ]
[20-10-07 16:21:00:675 JST] [ ‘B男’, ‘東京’, ‘男’, ‘AU’ ]
[20-10-07 16:21:00:676 JST] [ ‘D郎’, ‘東京’, ‘男’, ‘AU’ ]
[20-10-07 16:21:00:678 JST] [ ‘E次郎’, ‘神奈川’, ‘男’, ‘DOCOMO’ ]
[20-10-07 16:21:00:679 JST] [ ‘G助’, ‘千葉’, ‘男’, ‘SOFTBANK’ ]
[20-10-07 16:21:00:680 JST] [ ‘I郎’, ‘東京’, ‘男’, ‘SOFTBANK’ ]
[20-10-07 16:21:00:681 JST] [ ‘Jアン’, ‘埼玉’, ‘男’, ‘DOCOMO’ ]

性別が男のものが取得されました。
簡単にポイントだけ説明しておきますと、for文の条件は先ほどのlengthを使い第一配列群の添え字の数だけループさせています。
if文で、男の場合にログ出力していますが、この時第2配列の添え字は固定で”2″としています。
性別列は表の3列目で固定されているからです。

以上が二次元配列となります。

連想配列

最後に連想配列を見ていきましょう。
連想配列とは何かと言うと、KeyとValueによってデータを保持するデータ構造になります。
基本的な配列では、言わば”添え字とValue”でデータを保持するデータ構造と言えます。
連想配列の場合、要素を取り出す際には、添え字ではなく、Keyを指定する必要があります。

[コード]
function myFunction() {
  var hash = {名前: ‘ハンバーグ’, 分類: ‘洋食’, 主成分: ‘タンパク質’};
console.log(hash[“名前”]);
}

[ログ]
[20-10-07 16:53:22:767 JST] ハンバーグ

上記例では、Keyにあたるのが「名前、分類、主成分」となります。
コロンでつないでValueを設定します。また基本的な配列とは違い、波括弧でKeyとValueを囲むので注意が必要になります。

連想配列はJsonと呼ばれるデータ形式で使われます。
JsonはWebサービスと連携する場合に良く使われるデータ形式で、深く複雑なデータ構造を表現することができます。
WebAPIなどでサービスにリクエストを送るとJson形式でデータを返すことができます。
Web系に従事されている方やこれから進みたい方は是非使い方を覚えておくと良いでしょう。
最後にJsonのデータを想定してより複雑な連想配列を見ていきましょう。

[コード]
function myFunction() {
var Json = {
オムライス: {
分類: ‘洋食’,
主成分: ‘炭水化物’
},
サラダ: {
分類: ‘洋食’,
主成分: {
野菜: ‘繊維’,
ドレッシング: ‘油’
}
},
牛丼: {
分類: ‘和食’,
主成分: {
具: ‘タンパク質’,
ご飯: ‘炭水化物’
}
}
};

console.log(Json[“サラダ”][“主成分”][“ドレッシング”]);

}

[ログ]
[20-10-07 17:21:27:949 JST] 油

縦長に書きましたが、要は波括弧毎にKeyとValueが設定されていますので、それを大枠からKeyの値を検索していくイメージです。
実際は、連想配列と基本的な配列が混ざった場合もあります。
波括弧の場合は、Keyを指定し、棒括弧は添え字を指定すれば良いです。

最後に

いかがでしたでしょうか?
基本的な配列、二次元配列、そして連想配列の検索方法や特徴を見てきました。
大きな開発現場などでは大量のデータや複雑なデータ構造を扱う場合が多くなり、配列も複雑になってきます。
そんな場合でもデータ量に惑わされず、本記事で紹介した基本的な検索方法を実践して頂けたら幸いです。

よくある質問(FAQ)

Q. GASの配列で指定した値が何番目(添え字)にあるか調べるにはどうすればいいですか?

A. indexOf()メソッドを使うと、指定した値が配列の何番目にあるかを取得できます。値が見つからない場合は-1が返ります。文字列の中で位置を調べたい場合は、関連記事の「Google Apps Scriptー文字列の検索」もあわせてご参照ください。

Q. 配列に特定の値が含まれているかどうかだけを知りたい場合は?

A. includes()メソッドを使うと、位置ではなく含まれているかどうかをtrue/falseで取得できます。添え字が不要な場合はindexOf()より意図が伝わりやすいコードになります。

Q. オブジェクトの配列から条件に合う要素を1つだけ取得したい場合は?

A. find()メソッドを使うと、条件に一致した最初の要素を取得できます。該当する要素がなければundefinedが返ります。

Q. 条件に合う要素をすべて取得したい場合は?

A. filter()メソッドを使うと、条件に一致するすべての要素を新しい配列として取得できます。スプレッドシートのデータから特定の条件のものだけを抽出したい場合などに便利です。

Q. 配列とfor文で繰り返し処理をする際に気を付けることは?

A. 添え字は0から始まるため、配列の要素数(length)と同じ値を添え字に指定するとエラーになります。for文の条件は「i < array.length」のように必ず「未満(<)」にすることが重要です。

まとめ:配列の検索方法をマスターしよう

この記事のポイント:

  • 配列の要素を取得するには添え字(0始まり)を指定する
  • 値が「どこにあるか」を知りたい場合はindexOf()、「含まれているか」だけならincludes()が便利
  • 条件に合う要素を1件だけ取得するにはfind()、複数まとめて取得するにはfilter()を使う
  • 二次元配列はスプレッドシートなどの表データ、連想配列はJSON形式のデータを扱う際に頻出する
  • shift()/pop()は取得と同時に配列から要素を削除する点に注意する

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →