【GAS配列処理完全ガイド】Google Apps Script初心者向け|2次元配列・forEach・map・filter実務活用まで解説

2026年5月19日火曜日

GAS JavaScript プログラミング

t f B! P L

GAS配列処理完全ガイド|Google Apps Script初心者向けに実務レベルまで解説

GAS(Google Apps Script)を触り始めた頃、ほぼ全員がぶつかる壁があります。 それが「配列処理」です。

最初は意味不明なんです。 「なぜ取得したデータが二重のカッコなの?」 「for文が長すぎて頭が混乱する…」 「getValues()の中身が理解できない…」

でも、旅行で地図の見方を覚えると急に移動が楽になるように、 GASも配列が理解できた瞬さに景色が変わります。

実務で毎日のようにGASを書く中で感じるのはこれです。

  • ロジック=配列操作
  • 入力と出力=SpreadsheetApp

つまり、GASは極端に言えば「配列処理ゲーム」。 この記事では初心者でも理解できるように、実務目線で体系的に整理していきます。


GAS配列処理の基本|配列とは何か

配列とは簡単に言うと、 「複数のデータをまとめて管理する箱」です。


let list = [10, 20, 30];

イメージはこんな感じです。


index:  0   1   2
       [10,20,30]

重要なのは0から始まること。 ここを忘れるとエラーの原因になります。


GAS配列処理の基本操作

値を取得する


let list = [10,20,30];

Logger.log(list[0]);

結果は「10」。 配列名+角括弧+番号で取得できます。

値を書き換える


list[1] = 50;

結果:


[10,50,30]

要素を追加する(push)


list.push(40);

結果:


[10,20,30,40]

最後のデータを削除する(pop)


list.pop();

末尾の要素が削除されます。


GAS配列処理で最重要の繰り返し処理

配列は持っているだけでは意味がありません。 中身を回して処理して初めて価値が出ます。

for文の基本


let list = [10,20,30];

for(let i=0;i<list.length;i++){

 Logger.log(list[i]);

}

初心者の頃は長く見えますが、意味は単純です。

  • i=0から始める
  • 配列の長さまで繰り返す
  • 1回ごとにiを増やす

forEachで簡潔に書く


list.forEach(function(item){

 Logger.log(item);

});

実務ではこちらを使う場面も多いです。 コードが短くなり読みやすくなります。


GAS初心者最大の壁|2次元配列を理解する

GAS最大の特徴。 それがスプレッドシート=2次元配列という考え方です。


const data = sheet.getDataRange().getValues();

例えばシートがこうだったとします。

名前 年齢
鈴木 30
田中 25

取得するとこうなります。


[
 ["名前","年齢"],
 ["鈴木",30],
 ["田中",25]
]

最初見た時、「何これ…」となります。 でも旅行の乗換案内みたいなもの。 慣れると普通になります。

2次元配列のアクセス方法


data[1][0];

結果:


鈴木

意味はこうです。

  • 最初の[] → 行番号
  • 次の[] → 列番号

つまり、


data[1][1]

なら「30」になります。


GAS実務で頻出|2次元配列ループ処理


for(let i=0;i<data.length;i++){

 for(let j=0;j<data[i].length;j++){

  Logger.log(data[i][j]);

 }

}

二重ループ。 最初は難しく感じます。 でも仕組みは単純。

  • 外側=行を回す
  • 内側=列を回す

実務で多い1行ずつ処理するパターン


for(let i=1;i<data.length;i++){

 let name = data[i][0];
 let age = data[i][1];

 Logger.log(name + ":" + age);

}

ポイントはここ。


i = 1

ヘッダー行を除外しています。 実務ではかなり頻出です。


GAS配列処理で必須のmap・filter・find

map|データ変換


let result = list.map(function(x){

 return x * 2;

});

結果:


[2,4,6]

既存データを加工したい時の定番です。

filter|条件抽出


let result = list.filter(function(x){

 return x >= 20;

});

結果:


[20,30]

条件に合うものだけ残します。

find|1件取得


let result = list.find(function(x){

 return x === 20;

});

最初に見つかった1件だけ取得します。


GAS実務テンプレ|スプレッドシート配列処理


function processArray(){

 const sheet =
 SpreadsheetApp
 .getActiveSpreadsheet()
 .getActiveSheet();

 const data =
 sheet.getDataRange().getValues();

 const result =
 data.map((row,i)=>{

 if(i===0){

  return [...row,"倍"];

 }

 return [...row,row[1]*2];

 });

 sheet
 .getRange(
 1,
 1,
 result.length,
 result[0].length
 )
 .setValues(result);

}

これがGAS実務の王道パターンです。

流れ

  • 取得
  • 配列化
  • 加工
  • 一括書き込み

1セルずつ触らない。 これが高速化の基本です。


GAS配列処理のよくあるミス

indexミス


data[1][2]

存在しない列を参照するとエラーになります。

null・undefinedを見落とす


if(row[1])

空セルがある場合は注意です。

getValues()を1次元配列と思い込む

これは初心者あるある。

getValues()は必ず2次元配列。 ここを覚えるだけでもかなり前進します。


GAS配列処理まとめ|最重要ポイント

  • 1次元配列=単純データ
  • 2次元配列=スプレッドシート
  • forEachは実務頻出
  • mapは加工
  • filterは抽出
  • findは検索
  • GAS高速化の基本は配列一括処理

最後に核心をもう一度。

取得 → 配列 → 処理 → 一括書き込み

GASを書く時間が増えるほど、この流れに何度も戻ってきます。 配列を理解できれば、GASは一気に面白くなります。

最初は難しく感じても大丈夫。 旅行先の路線図も、何日か歩けば自然に覚えるように、 配列も触るほど体に馴染んできます。

GASを実務で使いこなしたいなら、 まずは今日紹介した配列処理を何度も動かしてみてください。 成長速度が変わります。

このブログを検索

Blog Archive

Welcome



旅するWebライター「Hide」のブログへようこそ!

2年間の世界一周を終え、今は旅の思い出を言葉にしながら、AIやプログラミングという新しい冒険を楽しんでいます。最新技術を味方につけて、もっと自由でクリエイティブな発信を続けていきます!

人気の投稿

QooQ