こんにちは、もりです!
この記事では、スプレッドシートの「セル範囲」の文字を検索する方法を紹介します。
セル範囲の値を取得するgetValuesメソッドでは、このような「二次元配列」として取得されます。
1 2 3 |
[ [ 'あ', 'い', 'う', 'え', 'お' ], [ 'か', 'き', 'く', 'け', 'こ' ], [ 'さ', 'し', 'す', 'せ', 'そ' ] ] |
これを検索すればよいのですが、ちょっと面倒くさい。一次元配列なら簡単に検索できるのに・・・
スポンサーリンク
Contents
スプレッドシートのセル範囲を検索する
この2ステップで処理を進めていきます。
- 「二次元配列」を「一次元配列」に変換する
- 「一次元配列」を検索する
※この記事で紹介するスクリプトはV8ランタイムの実行環境で動作します
①「二次元配列」を「一次元配列」に変換するflatメソッド
Arrayオブジェクトのflatメソッドで「二次元配列」を「一次元配列」に変換します。
Arrayオブジェクト.flat(depth)
- 引数:ネストされた配列を、どの程度の深さレベルでフラットにするかの指定。省略した場合は 1 となる。
- 戻り値:配列要素をフラットにした新しい配列
- 説明:配列要素を、指定の深さで再帰的に結合して新しい配列を作ります。二次元配列は一次元配列になります。
- 公式リファレンスはこちら
サンプルコードです。二次元配列から、新しい一次元配列が作成されます。
1 2 3 4 5 6 7 8 9 |
function sample_flat() { const array = [[1,2,3],[4,5,6],[7,8,9]]; const new_array = array.flat(); console.log(new_array); //[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } |
②「一次元配列」を検索するincludesメソッド
Arrayオブジェクトのincludesメソッドで「一次元配列」を検索します。
Arrayオブジェクト.includes(value)
- 引数:検索値
- 戻り値:Boolean
- 説明:配列の要素に検索値があればtrue, なければfalseを返す
- 公式リファレンスはこちら
サンプルコードです。
1 2 3 4 5 6 7 8 |
function sample_includes() { const array = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]; console.log(array.includes(5)); //true console.log(array.includes(10)); //false } |
【コードまとめ】スプレッドシートのセル範囲を検索する
flatメソッド、includesメソッドを組み合わせて検索します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function main() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('検索'); const values = sheet.getDataRange().getValues(); //セル範囲 const str = 'か'; //検索値 //二次元配列 => 一次元配列 const array = values.flat(); //一次元配列の検索結果をbool値で取得 console.log(array.includes(str)); //true } |
【まとめ】
スプレッドシートのセル範囲を検索する方法を紹介しました。
セル範囲をgetValuesメソッドで取得後、下記の手順で検索します。
- Array.flat()で「二次元配列」を「一次元配列」に変換する
- Array.includes(検索値)で「一次元配列」を検索する
配列を扱うArrayオブジェクトのメソッドを上手く使うと、スッキリ書くことができますね。ぜひ使ってみてください!
スポンサーリンク
スポンサーリンク