Google Apps ScriptのforEachの使い方を完全解説!初心者でも安心のサンプルコード付き

Google Apps Script(GAS)は、Googleの各種サービス(スプレッドシート、Gmail、カレンダーなど)を自動化するのにとても便利なツールです。その中でも繰り返し処理に使える「forEach」は、シンプルで可読性の高い構文として人気があります。
本記事では、「forEach」の基本的な使い方から、実際の業務自動化に使える応用例までをわかりやすく解説します。これからGASを使い始める方や、forEachの使いどころを知りたい方はぜひ参考にしてください。


forEachとは?基本の考え方

forEachは、JavaScriptの配列メソッドのひとつで、GASでも同様に使用できます。配列の各要素に対して、順番に関数を実行するための仕組みです。

const fruits = ["apple", "banana", "orange"];
fruits.forEach(function(item) {
Logger.log(item);
});

このように、配列fruitsの各要素をひとつずつ取り出して、ログに表示しています。for文に比べてスッキリした記述で、見やすくバグも起きにくいのが特徴です。


forEachの構文と使い方の基本

forEachの基本構文は以下のようになります。

forEach(function(要素, インデックス, 配列自体) {
// 実行したい処理
});

具体例:

const names = ["佐藤", "鈴木", "田中"];

names.forEach(function(name, index) {
Logger.log(index + "番目の名前は " + name + " です。");
});

このコードでは、配列の要素とそのインデックス(順番)を同時に扱っています。引数は省略可能なので、必要なものだけ指定すればOKです。


アロー関数を使った記述方法

forEachでは、より簡潔な「アロー関数」を使うこともできます。

const animals = ["犬", "猫", "うさぎ"];

animals.forEach((animal, i) => {
Logger.log(`動物${i + 1}: ${animal}`);
});

アロー関数を使うとコードがすっきりし、短く記述できるため、慣れてきたら積極的に使いたい書き方です。


スプレッドシートのデータをforEachで処理する

Google Apps Scriptの主な用途のひとつに「スプレッドシートの自動処理」があります。forEachを使えば、行ごとの処理も簡単に行えます。

実用例:スプレッドシートの1列目の名前をすべてログに出力

function logNames() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("名簿");
const data = sheet.getRange(2, 1, sheet.getLastRow() - 1).getValues(); // 2行目以降の1列目

data.forEach(row => {
const name = row[0];
Logger.log(name);
});
}

このようにして、ExcelのようなデータもforEachで柔軟に扱えます。


forEachで条件付き処理を行う

forEach内でif文などを組み合わせれば、条件付きの処理も簡単に書けます。

例:メールアドレスがある行だけ処理

function processEmailList() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("連絡先");
const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues(); // 名前とメール列

data.forEach(row => {
const name = row[0];
const email = row[1];

if (email) {
Logger.log(`${name} さんにメール送信予定: ${email}`);
}
});
}

このように、空白を除外した処理も直感的に記述できます。


forEachと他の繰り返し文との違い

構文特徴
for古典的な構文。柔軟性が高いが長くなることも多い
for...of配列の値を直接取り出せる
forEach配列専用。短くてわかりやすい

forEachは「配列全体に対して順番に処理したいとき」に最適です。ただし、breakcontinueが使えない点には注意しましょう。途中でループを抜けたい場合は、for文やsomeなどの別メソッドを使う必要があります。


forEachが向いているケースと向いていないケース

向いているケース:

  • 配列のすべての要素に同じ処理をしたい
  • 処理を中断する必要がない
  • コードの見た目をシンプルに保ちたい

向いていないケース:

  • 条件によって処理をスキップしたり中断したい(for文推奨)
  • 非同期処理と組み合わせたい(for...of + awaitの方が安全)

まとめ:forEachで効率よくGASを活用しよう

Google Apps ScriptにおけるforEachは、配列を扱う上で非常に便利で、特にスプレッドシートやメール処理などの繰り返し処理に力を発揮します。

・コードが読みやすくなる
・エラーが減る
・作業の自動化が進む

というメリットを活かしながら、上手に使っていきましょう。
GASの習得は「書いて覚える」ことが大切です。ぜひ本記事のコードをコピーして、実際にスプレッドシートやGmailで動かしてみてください。

タイトルとURLをコピーしました