【GAS×スプレッドシート】flatメソッドを使って二次元配列を扱いやすくしよう

おはこんばんにちは、4号です。

私はリズムゲームが好きなのですが、意外と頭を使うので疲れるんですよ。
なので、スコアを伸ばしたいからといってたくさんプレイしても、疲れてる状態だとなかなかスコアが伸びず
ストレスが溜まるというジレンマに陥ってしまうのです…
やりすぎは良くないよってことですね。

今回は、GASのflatメソッドを使ってスプレッドシートから取得する二次元配列を扱いやすくする方法を
お伝えします。

flatメソッドとは

flatメソッドは2次元配列を1次元配列に変換する事ができるメソッドです。

例えば、

const array = [ [ 3, 2, 7 ], [ 5, 4, 9 ], [ 6, 8, 1 ] ];

このような配列が入った変数に対してflatメソッドを使うと、

const arrayFlat = array.flat();
console.log(arrayFlat);         // 出力結果 : [ 3, 2, 7, 5, 4, 9, 6, 8, 1 ]

こんな感じになります。

実際の使用例

上の画像の範囲にすいかが含まれていたらログを残す処理をしたいと思います。

まずはflatメソッドを使わなかったときのコードを見てみましょう。

function test() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("シート1");
  const range = sh.getRange(1, 1, 5, 5).getValues();
  for(const row of range){
    for(const cell of row){
      if(cell === "めろん"){
        console.log("めろんあったよ");
      }
    }
  }
}

続いてflatメソッドを使ったコードを見てみましょう。

function test() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("シート1");
  const range = sh.getRange(1, 1, 5, 5).getValues().flat();      // ここでflatメソッドを使ってます
  for(const cell of range){
    if(cell === "めろん"){
      console.log("めろんあったよ");
    }
  }
}

for文が一つ減りましたね。

今回は簡単な処理だったのであまり変化がありませんでしたが、長い処理になればなるほど
コードの見やすさなどが変わってきます。

GASにとって二次元配列は切っても切れない関係にあるので、二次元配列と仲良くなりたい方は
ぜひ使ってみてください。

弊社はGoogleWorkspaceの販売代理店をしております。
アカウントの開設や他社様からのお乗り換えなどのご相談もお受けしております。
お問い合わせお待ちしております!

野村 航平

高専でC・Java、プログラミングスクールにてRuby・JavaScript・SQL・AWSなどを学習後、現在のヒカリシステムに入社。
木下さんの弟子をやらせてもらっています。

関連記事