※当サイトの商品・サービスのリンク先にPRを含みます。

GAS入門 Google Apps Script

【初心者必須】GASで二次元配列を一次元化するflatメソッド

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

Google Apps Scriptで配列内の要素が配列になっていて、要素の取り出しが大変になったことありませんか?

この記事ではそのお悩みを、コピペOKのGoogle Apps Scriptのコードで解決します。

あっきょ
この記事は以下で悩んでいる人におすすめ!

  • そもそも二次元配列って何?
  • 二次元配列を一次元化して、普通の配列のように扱いたい
  • プログラミングでJavaScriptを学んだけど、何を作っていいかわからない

誰でも無料で簡単にできますので、お気軽に学んでいきましょう!

二次元配列とは?

二次元配列とは、「配列の中にある配列」です。

GASでは、getValuesメソッドでスプレッドシートのセル複数から値を取りだすのに使います。

【1行で簡単】GASでシートの複数のセルの値を一括で取得

続きを見る

例えば、画像のようなスプレッドシートを作成して赤で囲んだ範囲の値を取得するとします。

GASでスプレッドシート使用時に二次元配列が発生する説明

Apps Scriptに複数のセルから値を取得するコードを貼り付けて実行します。

getValuesメソッドを使ってセル内のデータを得ます。

function getValuesSheet() {
 const sheet = SpreadsheetApp.getActiveSheet();
 const values = sheet.getRange("A2:A6").getValues();

 Logger.log(values);
}

関数を実行して実行ログをみると、配列の中に5つの配列が格納されています。

このように、配列内の要素も配列の状態を二次元配列といいます。

GASでスプレッドシート使用時に二次元配列が発生した結果

二次元配列のデメリット

二次元配列のデメリットと、配列を一次元に変換する理由を解説します。

コードが煩雑化

二次元配列を処理するとコードが無駄に長くなることがデメリットです。

例えば、for文で値を取り出してシート名をログ出力します。

function getValuesSheet() {
 const sheet = SpreadsheetApp.getActiveSheet();
 const values = sheet.getRange("A2:A6").getValues();
 const valuesLen = values.length; //配列の長さ

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

結果は画像の通りです。

配列から取り出した要素が配列になっているのがわかります。

しかし、このままでは要素を処理できず、もう一度for文で取り出す必要があります。

二次元配列のデメリット コードが煩雑化の説明

配列内の配列から要素を取り出す場合、コードは以下のようになります。

forを二重に使うのでコードが複雑になっています。

したがって、長くて複雑なコードを簡略化して配列を一次元化します。

function getValuesSheet() {
 const sheet = SpreadsheetApp.getActiveSheet();
 const values = sheet.getRange("A2:A6").getValues();
 const valuesLen = values.length; //配列の長さ

 for(var i = 0; i<valuesLen; i++){ //外側の配列の処理
   const arrayLen = values[i].length; //配列から取り出した配列の長さ

   for(var m = 0; m<arrayLen; m++){ //配列から取り出した配列の処理
    Logger.log(values[i][m]);
   }
 }

}

二次元配列を一次元化するサンプルコード

GASで二次元配列を一次元化して配列を調整します。

解説の項目

  • flatメソッド | 二次元配列を一次元化
  • サンプルコード

flatメソッド | 二次元配列を一次元化

GASで二次元配列を一次元配列に変換するflatメソッドの説明

二次元配列を次元配列に変換するには、flatメソッドを使います。

引数はありません

このメソッドを一度書くだけで配列処理を簡素化できます。

サンプルコード

二次元配列を一元配列にしてみましょう。

定数 valuesFlatで二次元配列のvaluesを一次元化します。

function getValuesSheet() {
 const sheet = SpreadsheetApp.getActiveSheet();
 const values = sheet.getRange("A2:A7").getValues();
 const valuesFlat = values.flat();

 Logger.log(valuesFlat);
}

配列を一次元化するテスト

配列を一次元化する関数を実行して、ログをみましょう。

Apps Scriptの上バーの文字が「getValuesSheet」になっていたら、「実行」を押します。

「このアプリはGoogleで確認されていません」と表示した場合はこちら

【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法

続きを見る

ログ出力を確認します。

配列を一次元化してすっきりします。for文などの繰り返し構文不要で実現できます。

【基本】GASで二次元配列を処理するコード一覧

この記事では、二次元配列を一次元化するflatメソッドを紹介しました。

当サイトでは、二次元配列から直接要素を取り出す方法も紹介しています。

誰でも簡単に無料でできるので、ぜひご活用ください。

もちろん、コピペOKです。

【5分で便利】GASで二次元配列内の配列から要素を取り出し

続きを見る

おわりに | GASでスキルアップを目指すには

以上、GASで二次元配列を一次元配列に変換する方法でした。

そのままコピペして日常業務で使いやすいように改修したり、プログラミングの練習や動作確認用に使ってみましょう。

GASでさらに業務効率化する場合、参考書やプログラミングスクールを使うとあなた自身でアプリを作るスキルが身に付きます

GASユーザーのあっきょがおすすめの勉強方法はこちら↓

スクール経験者のあっきょが82社から厳選してるッス!
あっきょ

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

-GAS入門, Google Apps Script
-, , , , , , , , , , , , , , , , , , , ,