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は「配列全体に対して順番に処理したいとき」に最適です。ただし、break
やcontinue
が使えない点には注意しましょう。途中でループを抜けたい場合は、for
文やsome
などの別メソッドを使う必要があります。
forEachが向いているケースと向いていないケース
向いているケース:
- 配列のすべての要素に同じ処理をしたい
- 処理を中断する必要がない
- コードの見た目をシンプルに保ちたい
向いていないケース:
- 条件によって処理をスキップしたり中断したい(
for
文推奨) - 非同期処理と組み合わせたい(
for...of
+await
の方が安全)
まとめ:forEachで効率よくGASを活用しよう
Google Apps ScriptにおけるforEachは、配列を扱う上で非常に便利で、特にスプレッドシートやメール処理などの繰り返し処理に力を発揮します。
・コードが読みやすくなる
・エラーが減る
・作業の自動化が進む
というメリットを活かしながら、上手に使っていきましょう。
GASの習得は「書いて覚える」ことが大切です。ぜひ本記事のコードをコピーして、実際にスプレッドシートやGmailで動かしてみてください。