【GAS】二次元配列と連想配列の違いと変換方法

GASgetContentText,UrlFetchApp,UrlFetchApp.fetch,連想配列,配列

Google Apps Script(GAS)において、配列を扱った処理が非常に重要です。この記事では、データを扱うためのデータ構造である「連想配列」「二次元配列」の変換方法について解説します。

一次元配列に関する操作も下記の記事で詳しく解説しています。

二次元配列と連想配列の違い

二次元配列とは

二次元配列とは二次元的に宣言された配列のことで、同じ要素数の2つ以上の配列を持っています。スプレッドシートの行列をイメージするとわかりやすいでしょう。GASで扱うことが多いスプレッドシートから読み込んだ配列は二次元的な性質を持っています。

二次元配列のメリット

スプレッドシートやエクセルがまさにそうであるように、「表」のような使い方ができる便利さがあります。「横(行)」と「縦(列)」で要素の指定・アクセスができるので、場所の指定が直感的に分かりやすいのが大きなメリットでしょう。

連想配列とは

名前(キー)と値(バリュー)が1対1で対応するように定義づけられた配列のようなオブジェクトのことです。配列ではないので配列に使っていた関数やメソッドはそのままは使えません。

Web APIで取得するレスポンスは連想配列のことが多いので操作方法を覚えておくと便利でしょう。

連想配列のメリット

取得・出力しようとする値(バリュー)を、名前(キー)によって間違いなく指定することができます。
二次元配列の値を取得する際、処理の都合上、新たな行・列を追加・削除などによって指定すべき配列番号が変化するケースがありますが、連想配列であればこのような問題を回避して正確な要素を指定・抽出することが可能です。

連想配列から二次元配列への変換

下記のコードを実行して得られる住所の連想配列から二次元配列への変換を想定します。
郵便番号検索APIを使って某所の住所情報を連想配列で取得しています。

  const zipcode = '7830060'; // 対象となる郵便番号の指定
  const url = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zipcode;

  const response = UrlFetchApp.fetch(url);
  const content = response.getContentText();
  const json = JSON.parse(content);

  //連想配列抽出 
  const obj = json.results[0];
元となる連想配列(obj)

{ address1: '高知県’, 
 address2: '南国市’,
 address3: '蛍が丘’,
 kana1: 'コウチケン’,
 kana2: 'ナンコクシ’,
 kana3: 'ホタルガオカ’,
 prefcode: ’39’,
 zipcode: '7830060’ }

サンプルコード

連想配列から二次元配列への変換の場合は簡単で、キーと値をそれぞれの配列として一つの配列に格納すればOKです。

const array = [Object.keys(obj),Object.values(obj)]

Object.keys(連想配列オブジェクト):名前群の配列

Object.values(連想配列オブジェクト):値群の配列

実行結果

[ [ 'address1’, 'address2’, 'address3’, 'kana1’, 'kana2’, 'kana3’, 'prefcode’, 'zipcode’ ],
 [ '高知県’, '南国市’, '蛍が丘’, 'コウチケン’, 'ナンコクシ’, 'ホタルガオカ’, ’39’, '7830060’ ] ]

二次元配列から連想配列への変換

上のサンプルコードで最終的に得られた8列2行の二次元配列を、連想配列に戻してみます。

元となる二次元配列(array)

[ [ 'address1’, 'address2’, 'address3’, 'kana1’, 'kana2’, 'kana3’, 'prefcode’, 'zipcode’ ],
 [ '高知県’, '南国市’, '蛍が丘’, 'コウチケン’, 'ナンコクシ’, 'ホタルガオカ’, ’39’, '7830060’ ] ]

サンプルコード

for文を使って、空の変数に連想配列を繰り返し定義していく方法が一番シンプルでしょう。

  const keys = array[0];
  const values = array[1];

  let obj = {};
  for(let i=0; i<keys.length; i++){

      obj[keys[i]] = values[i];

  }

 console.log(obj);
実行結果

{ address1: '高知県’,
 address2: '南国市’,
 address3: '蛍が丘’,
 kana1: 'コウチケン’,
 kana2: 'ナンコクシ’,
 kana3: 'ホタルガオカ’,
 prefcode: ’39’,
 zipcode: '7830060’ }

まとめ

この記事ではGoogle Apps Script(GAS)における二次元配列と連想配列の変換方法についてご紹介しました。
二次元配列から連想配列への変換方法:for文を使って二次元配列の各項目を連想配列のキー・値として繰り返し定義する
連想配列から二次元配列への変換方法:キーと値をそれぞれの配列として一つの配列に格納する

その他、配列の操作方法は下記の記事で詳細に解説しているので確認してみてください。

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点