以前の記事では少々軽く流してしまいましたが、Google Apps Scriptでは、配列内を先頭から検索したり、末尾から検索したりする事のできるスクリプトがありますので、今回はそちらをご紹介します。
※以前の記事はこちらをご覧ください。
配列の先頭から検索する、indexOf
配列内を先頭から検索するには、下記スクリプトを使用します。
[配列].indexOf(検索値)
このスクリプトは配列の先頭から末尾に向かって検索値を検索し、検索値が見つかれば、最初に見つけた配列要素のインデックス番号を返し、検索値が見つかれなければ-1を返します。
下記のサンプル1では、
var ary = [‘いぬ’,’さる’,’きじ’,’いぬ’,’さる’,’きじ’];
という配列内を、
ary.indexOf(‘いぬ’)
で「いぬ」という文字列を配列の先頭から検索します。
今回の配列では「いぬ」という文字列は一番最初にありますので、メッセージボックスには0と表示されます。
また、
ary.indexOf(‘ねこ’)
で「ねこ」という文字列を配列の先頭から検索しても存在していませんので、メッセージボックスには-1と表示されます。
・サンプル1
function index() { var ary = [‘いぬ’,’さる’,’きじ’,’いぬ’,’さる’,’きじ’]; Browser.msgBox(ary.indexOf(‘いぬ’)); } |
配列の末尾から検索する、lastIndexOf
配列内を末尾から検索するには、下記スクリプトを使用します。
[配列].lastIndexOf(検索値)
このスクリプトは配列の末尾から先頭に向かって検索値を検索し、検索値が見つかれば、最初に見つけた配列要素のインデックス番号を返し、検索値が見つかれなければ-1を返します。
下記のサンプル1では、
var ary = [‘いぬ’,’さる’,’きじ’,’いぬ’,’さる’,’きじ’];
という配列内を、
ary.lastIndexOf(‘いぬ’)
で「いぬ」という文字列を配列の末尾から検索します。
今回の配列では「いぬ」という文字列は末尾から3番目にありますが、先頭から数えると4番目にありますので、メッセージボックスには3と表示されます。
また、
ary.indexOf(‘ねこ’)
で「ねこ」という文字列を配列の先頭から検索しても存在していませんので、メッセージボックスには-1と表示されます。
・サンプル2
function lastindex() { var ary = [‘いぬ’,’さる’,’きじ’,’いぬ’,’さる’,’きじ’]; Browser.msgBox(ary.lastIndexOf(‘いぬ’)); } |
【少し応用】配列内の検索結果に応じて処理を分ける
下記のサンプル3では、検索値が見つかれなければ-1を返ってくる事を利用し、
if ( ary.indexOf(str) == -1 ){
} else {
}
で検索値が存在する場合としない場合でメッセージボックスに表示される文字列を分岐しています。
この方法はフォルダの検索など、様々な場面で活用できるため非常に便利です。
・サンプル3
function nashi() { var str = ‘ねこ’; if ( ary.indexOf(str) == -1 ){ Browser.msgBox(str + ‘は存在しません’); } else { Browser.msgBox(str + ‘は存在します’); } |