【GAS講座】mapメソッドは連携魔法!モンスターたちを一斉強化!
GASでよく出てくる
map()
ってなんですか? なんだか呪文みたいで怖いです…。
猫男

catman
ふふふ…
map()
はまさに“連携魔法”!一斉にカード(配列)へ効果を与える強力な技だ。詳しく解説しよう!
GASで使うmapメソッドの使い方
前回に引き続き、モンスターカードの世界に例えて解説するぞ。
配列(Array)は「モンスター軍団」だ!
まず、map()
は配列(Array)に使えるメソッドだ。
配列とは、複数のモンスターカードを並べたデッキのようなもの!
const monsters = ["ドラゴン", "マジシャン", "ハネボー"];
このままだと、名前だけのモンスターたち。
ここに“強化魔法”をかけてみよう!
map() は全体強化魔法!
map()
は配列のすべての要素に“効果”を与える魔法のメソッド。
const poweredUp = monsters.map(name => name + "【攻撃力+500】"); Logger.log(poweredUp);
おお!全員が「攻撃力+500」になってる…!魔法カードみたい!

猫男

catman
そう!mapは“全体魔法”。1体ずつ処理しなくても一斉に効果を与えられるのだ!
仕組み:1体ずつ処理して新しい軍団を作る!
実は map() の中身はこう動いている。
- 元の配列を1体ずつ取り出す
- 指定した処理(攻撃力アップなど)を行う
- 新しい配列にして返す
const newArray = oldArray.map(function(value, index, array) { // value = 値 // index = 位置(0からスタート) // array = 元の配列 });
実用例:スプレッドシートの値を一括変換!
たとえば、スプレッドシートの列データを全部「さん」付けにしたいならこうだ。
function addSanToNames() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const names = sheet.getRange("A2:A10").getValues().flat(); // 1次元配列に const updated = names.map(name => name + "さん"); Logger.log(updated); }
わあ〜!一人ずつじゃなく、全員に“さん”をつけられました!

猫男

catman
それが map の力!カード軍団を一気に変身させる“最強の連携魔法”なのだ!
練習問題
問題 |
---|
あなたは「カード名の一覧」を持っています。すべてのカード名の末尾に「【属性:光】」を追加してください。
|
解答
const updated = cards.map(name => name + "【属性:光】"); Logger.log(updated);
解説
配列の要素(名前)を1つずつ受け取り、加工
もとの配列を壊さず、新しい配列として生成
出力はこうなる:
[ "エルフ【属性:光】", "ドラゴン【属性:光】", "ナイト【属性:光】" ]
まとめ
map()
は配列に使う魔法- すべての要素に処理をかけて新しい配列を返す
- “一括強化”や“全員変身”にピッタリ
わかりました!map()はモンスターたちに一斉に魔法をかける感じですね!

猫男

catman
その通り!うまく使いこなせば、君のスクリプトも進化するぞ!