Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【初心者向け!GAS基本操作】GASで一次元配列内の要素を検索する方法

Google Apps Script indexOf

こんにちは!
Yuki (@yukibnb) です。]

今回はGoogle Apps Script (GAS) を使って一次元配列内の要素を検索する方法を紹介します。

一次元配列内に特定の要素が存在するかどうかで処理を分岐させたい場合に活用できます。

では見ていきましょう!

 

コピペでOK!一次元配列内の要素を検索する方法

≪indexOf≫ 合致する要素のインデックス番号を取得する

Google Apps Script Array indexOf

一次元配列に対してindexOfメソッドを使用すると、検索したい文字列がその一次元配列内に存在するか検索できます。

そして存在する場合、その要素のインデックス番号を返します

 

let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"];

//一次元配列fruits内の"ナシ"のインデックス番号を検索し、
//変数checkに格納する
let check = fruits.indexOf("ナシ");

//ログを出力する
Logger.log(check);

/* ログの中身
3.0
*/

くだものが入った一次元配列fruitsの中に「ナシが存在するか」、「存在する場合はナシのインデックス番号は何か」をindexOfメソッドを使って検索しました。

検索結果を変数checkに格納し、ログを出力すると3.0と表示されました。

これでナシは一次元配列fruitsのインデックス番号3の要素であると確認ができました。

次にいくつかポイントと活用例を見てみましょう。

 

ポイントと活用例

インデックス番号は0から始まる

Google Apps Script Array indexOf

配列のインデックス番号は0から始まります。

そのため先ほどのナシのインデックス番号は4ではなく3となります。

 

一次元配列の先頭から順に検索する

Google Apps Script Array indexOf

indexOfメソッドは一次元配列の先頭から順に検索します。

「先頭から」という特性が次に紹介するポイントを理解するカギとなります。

 

最初に合致した要素のインデックス番号を返す

Google Apps Script Array indexOf

indexOfメソッドは一次元配列の先頭から順に検索し、最初に合致した要素のインデックス番号を返します。

合致する要素すべてのインデックス番号を返しませんのでご注意ください。

 

let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"];

//一次元配列fruits内の"りんご"のインデックス番号を検索し、
//変数checkに格納する
let check = fruits.indexOf("りんご");

//ログを出力する
Logger.log(check);

/* ログの中身
1.0
*/

一次元配列fruitsの中にりんごは二つあります。

それぞれインデックス番号は14です。

「一次元配列の先頭から順に検索する」、「最初に合致した要素のインデックス番号を返す」という二つの特性により、indexOfメソッドはりんごの一つ目のインデックス番号である1を返します。

 

検索したいモノが一次元配列内に存在しない場合

Google Apps Script Array indexOf

もし検索したいモノが一次元配列内に存在しない場合、indexOfメソッドは-1を返します。

 

let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"];

//一次元配列fruits内の"バナナ"のインデックス番号を検索し、
//変数checkに格納する
let check = fruits.indexOf("バナナ");

//ログを出力する
Logger.log(check);

/* ログの中身
-1.0
*/

一次元配列fruits内にバナナがあるか検索しましたが、残念ながらバナナは存在していません。

そのため変数checkには-1が格納されます。

この特性を活かして、検索したいモノが一元配列内に存在するかどうかで処理を分岐させることが可能です。

 

検索したいモノが一元配列内に存在するかどうかで処理を分岐させる

検索したいモノが一元配列内に存在しない場合、indexOfメソッドの返り値は-1です。

検索したいモノが一元配列内に存在する場合、最初に合致した要素のインデックス番号を返します。インデックス番号は0以上です。

この特性とif文を組み合わせて、以下のような処理をすることができます。

let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"];

let check = fruits.indexOf("検索したいモノ");

if (check >= 0) {
  //存在する場合に実施したい処理をここに記述する
} else {
  //存在しない場合に実施したい処理ここに記述する
}

if (check >= 0) { }では変数checkの値が1以上か確認しました。

検索したいモノが一次元配列内に存在する場合の処理を主としたい場合、こちらを使用できます。

 

let fruits = ["もも", "りんご", "オレンジ", "ナシ", "りんご"];

let check = fruits.indexOf("検索したいモノ");

if (check === -1) {
  //存在しない場合に実施したい処理ここに記述する
} else {
  //存在する場合に実施したい処理をここに記述する
}

if (check === -1) { }では変数checkの値が-1か確認しました。

検索したいモノが一次元配列内に存在しない場合の処理を主としたい場合、こちらを使用できます。

 

まとめ

今回はGoogle Apps Script (GAS) を使って一次元配列内の要素を検索する方法を紹介します。

if文と組み合わせた処理の分岐は使用頻度が高くおすすめです。

次回記事もご期待ください!