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

当ページのリンクには広告が含まれています。

お仕事おつにゃッス🐈文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

Google Apps Scriptで配列内の要素が配列になっていて要素の取り出しが大変ですよね。

しかし、flatメソッドを使えばコードを長くすることなく簡潔に配列処理できます。

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

こんな人におすすめ!

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

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

目次

サイト運営者

あっきょ

あっきょ

地方の中小企業で働く文系卒の総務&社内エンジニア。自身のプログラミング学習の経験から、未経験者でも挫折しないでスキルアップの支援をするサイト『デイコー』を運営。得意な言語:GAS・JavaScript・Python

二次元配列とは?

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

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

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

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文で取り出す必要があります。

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

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]);
   }
 }

}

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

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

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

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で確認されていません」と表示した場合はこちら

ログ出力を確認します。

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

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

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

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

コピペOKなのでぜひご活用ください。

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

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

そのままコピペして使ったり、自作のコードに取り入れましょう。

GASでスキルアップするなら当たり前ですが勉強が大事。

GASを効率的に学ぶなら以下の2つの方法が多いです。

  • 参考書やオンライン教材で独学
  • プログラミングスクールを利用

正しく学ぶことで非エンジニアでも実用的な業務効率化のスキルが身に付きます

デイコーでは、GASのサンプルコードからおすすめのプログラミングまで幅広く紹介。

初心者にもわかりやすく解説しています。

あっきょ

プログラミングスクールは82社を分析したッス!

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

それでは、よいプログラミングライフを!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系未経験のWebエンジニア。事務職がプログラミング学習して社内SE部門立ち上げ&Webサイト作成。業務効率化で残業80%減を達成。得意な言語 : GAS, JavaScript, Python

目次