Google Apps Scriptで簡単操作!GASのMapオブジェクトの使い方

GASのMapってどうやって使うんだろう?
猫男
猫男
catman
catman
ふっ、catmanが「GASのマップオブジェクト」についてわかりやすく教えよう!まずは基本からだ!

GASでのMapオブジェクトの基本

GASでは、JavaScriptと同様にマップオブジェクトを使える。

これはキーと値のペアを保持する便利なデータ構造だ。

Mapの作成と基本操作


const myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');

Logger.log(myMap.get('key1')); // value1
Logger.log(myMap.has('key2')); // true
myMap.delete('key1');
Logger.log(myMap.size); // 1

new Map()で新しいマップを作成し、set()メソッドでキーと値を設定する。

Mapオブジェクトと配列の関係

Mapオブジェクトは配列と相互に変換できる。各要素を配列として扱うことができる。


const arrayFromMap = Array.from(myMap);
Logger.log(arrayFromMap); // [['key2', 'value2']]

Array.from()でMapを配列に変換することができる。

Mapオブジェクトって配列とすごく似てるんだね。でも、二次元配列とかも扱えるのかな?
猫男
猫男
catman
catman
もちろんさ。GASではMapを使用して二次元的なデータ構造を作れるのだ!

GASでMapによる二次元配列の管理

Mapと二次元配列の利用

Mapは他のMapオブジェクトや配列を値として持てるので、二次元データの管理にも役立つ。


const matrixMap = new Map();
matrixMap.set('row1', new Map([['col1', 1], ['col2', 2]]));
matrixMap.set('row2', new Map([['col1', 3], ['col2', 4]]));

Logger.log(matrixMap.get('row1').get('col1')); // 1

✅ Mapの中にMapを設定することで、二次元配列を管理できる。

アロー関数とMapの組み合わせ

アロー関数でMapを操作

Mapはアロー関数とも相性が良く、ループや操作を簡潔に書くことができる。


matrixMap.forEach((cols, row) => {
  cols.forEach((value, col) => {
    Logger.log(${row} ${col}: ${value});
  });
});

forEach()を使ってアロー関数を用いると、見やすく簡潔にMap内の操作ができる。

出たな〜、アロー関数!!
猫男
猫男

練習問題:Mapオブジェクトの応用

次のコードでMapを使い、’key3’に対応する値を’updated value’に変更し、その後、全てのキーと値をログに出力するスクリプトを書きなさい。

解答・解説


const sampleMap = new Map();
sampleMap.set('key1', 'value1');
sampleMap.set('key2', 'value2');
sampleMap.set('key3', 'value3');

// 解答部分:'key3'の値を更新
sampleMap.set('key3', 'updated value');

// 全てのキーと値をログに出力
sampleMap.forEach((value, key) => {
  Logger.log(${key}: ${value});
});

解説:
set()メソッドで既存のキーの値を更新できる。
forEach()メソッドを使い、アロー関数で各キーと値をログに出力した。これはMap操作の基本となる。