立入|ITブログ
【GAS】map関数 | スプレッドシートから特定の列を取得する

 

map関数でスプレッドシートから特定の列を取得する

下記のようなスプレッドシートがあったとします。

A B C D E
1 1 2 3 4 5
2 11 12 13 14 15
3 21 22 23 24 25

スプレッドシートから全ての値を取得すると、下記のような二次元配列が取得できます。

[[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]

ではこの二次元配列から、B列の値のみを抜き出すにはどうすれば良いでしょうか?

こんな時に便利なのがmap関数です。

map関数は配列の中の特定の要素を抜き出す時に使える

map関数では下記のような事が可能です。

//B列 = [2,12,22]
var values = [[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]
var B列 = values.map(行 => 行[1])

上記で「配列の各要素=行」の2列目の要素(配列は0からカウントする)を抜き出せます。今回なら[2,12,22]を取得できます。

for文で書くと下記と同じような処理になります。

//B列 = [2,12,22]
var values = [[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]
var B列 = []
for(var i=0;i<values.length;i++)
{
	B列.push(values[i][1])
}

「B列を10倍した配列を取得する」ような事もできます。

//B列 = [20,120,220]
var values = [[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]
var B列 = values.map(行 => 行[1] * 10)

forEachは処理するだけ。mapは配列を返す

似た関数にforEachがあります。

forEachとmapの違いは戻り値です。map関数では配列が取得できますが、forEach関数は処理をするだけで、値は取得できません。

//B列 = null
var values = [[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]
var B列 = values.forEach(行 => 行[1])

//B列 = [2,12,22]
var values = [[1,2,3,4,5],[11,12,13,14,15],[21,22,23,24,25]]
var B列 = values.map(行=> 行[1])

二次元配列の列を取得したい時はmap関数を使おう

スプレッドシートの値を取得すると、行ごとに二次元配列で値を取得できます。そのため列単位で何かをしようとすると困ってしまう事も多いです。

map関数を使えば列単位で情報を処理する事ができるようになるでしょう。