Google Apps Script

【GAS】スプレッドシートのデータからオブジェクトを作る方法

こんにちは、もりです!

この記事では、スプレッドシートのデータを使って「オブジェクト」を作成する方法を紹介します!

スプレッドシートのデータから「オブジェクト」を作成します。

  • 1行目:キー
  • 2~n行目:値
GASでスプレッドシートのデータからオブジェクトを作成する

【予備知識1】オブジェクト(連想配列)とは

まず、「配列」と「オブジェクト(連想配列)」の違いをみておきましょう。

オブジェクト(連想配列)とは、「キー」と「値」をペアにしたデータ構造です。

 

※正確には「配列」も「連想配列」ともに「オブジェクトの一種」ですが、JavaScriptでは「連想配列」を「オブジェクト」と表現するのが一般的なので、この記事では「オブジェクト」という単語を使用します。

【予備知識2】オブジェクトのキーに変数を使用する方法

GASでは、オブジェクトの「キー」に変数を使用することが可能です。

(参考サイト)[GAS]キーを変数から取得してオブジェクトを作る

サンプルコードを見てみましょう。

【予備知識3】配列とオブジェクトをネスト(入れ子)する方法

「配列」の定義には、角括弧(かくかっこ)を使います。

 

「オブジェクト」の定義には、波括弧(なみかっこを使います。

 

 

「配列」の中に「オブジェクト」を列挙する記述方法です。

スプレッドシートのデータからオブジェクトを作成

まず、全体のコードがこちらです。

 

ログ出力結果です。

 

※GASではオブジェクトの並び順は保証されていません。

  • スプレッドシート id, name, age の並び順
  • ログ出力結果 name, id, age の並び順

スプレッドシートのデータを取得(二次元配列)

アクティブなシートのデータ範囲を、変数valuesに格納します。

 

二次元配列valuesの番地[x][x]は以下のとおりです。配列の長さ(length)は4です。

GAS二次元配列

オブジェクトの「キー」にする変数を用意

スプレッドシート1行目の各項目を、オブジェクトの「キー」として使うために、変数に格納します。
(※この時点ではまだオブジェクトは存在しません。変数に値を代入しているだけです)

 

GASスプレッドシートの値をキーにする

ループ1周目(i = 1)

空のオブジェクトを作成してから、オブジェクトの各「キー」に「値」を設定します。

 

i = 1 なので、スプレッドシートの2行目の値です。

 

ここでオブジェクト(変数obj)の中身を確認してみます。各「キー」に、スプレッドシート2行目の「値」が設定されています。

 

つづいて、「配列」に「オブジェクト(変数obj)」を追加します。配列の末尾に要素を追加するpushメソッドを使用します。

 

この時点の配列(変数arr)の状態です。

以上がfor文1周目の処理です。同じ処理を繰り返します。

ループ2周目(i = 2)

オブジェクトの各「キー」に「値」を設定します。i = 2 なので、スプレッドシートの3行目の値です。

 

pushメソッドで「配列」の末尾に「オブジェクト」追加します。

ループ3周目(i = 3)

オブジェクトの各「キー」に「値」を設定します。i = 3 なので、スプレッドシートの4行目の値です。

 

pushメソッドで配列の末尾に追加します。

結果出力(ログ)

処理が終了しました。結果を見てみましょう。

まとめ

スプレッドシートのデータから、オブジェクトを作成する方法を紹介しました!

  • 「配列」と「オブジェクト」の違い
  • 「配列」と「オブジェクト」をネストする方法
  • 「オブジェクト」のキーに変数を使用する方法

 

GASでスプレッドシートのデータからオブジェクトを作成する

 

この方法の嬉しいポイントは2つ!

  • オブジェクトの「キー」に変数を使用するので、キー名称を変更する場合、スプレッドシートのデータを書き換えるだけでOK!(スクリプトの修正不要)
  • ループ処理なので、スプレッドシートの行数が増減してもOK!