earthpg:GAS専門のプログラミングスクール

初心者でも安心!GASのforeach徹底攻略ガイド

GASで配列を操作するのに、foreachってよく聞くんだけど、どうやって使うんだろう?ちょっと難しそうで…
猫男
猫男
catman
catman
やるならいまでしょ。catmanがGASのforeachをマスターするための道をお供するぞ

GASのforeachとは何か

GAS(Google Apps Script)のforeachは、配列を便利に操作するためのメソッドだ。

基本的なforeachの使い方

まずは基本から。

foreachは配列の各要素に対して、指定した処理を一つ一つ順番に実行するんだ。

 const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
  Logger.log(number);
}); 

このコードでは、numbersという配列の各要素をログに出力している。

indexやアロー関数を使ったforeach

GASのforeachでは、インデックスも利用できる。

 const fruits = ['apple', 'banana', 'cherry'];
fruits.forEach((fruit, index) => {
  Logger.log(index + ': ' + fruit);
}); 

ここでは、アロー関数と一緒に使ってインデックスを出力している。

なるほど、foreachでインデックスも取れるんだね!アロー関数も使いやすそう!
猫男
猫男

スキップや抜ける方法を試してみよう

foreachでスキップする

特定の条件でスキップしたい場合、continueは使えないけど工夫次第で似たような動作ができるんだ。

 const numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) => {
  if (number === 3) return; // 3をスキップ
  Logger.log(number);
}); 

この場合、3だけがログに出力されないようになっている。

foreachを途中で抜ける

しかし、途中で抜ける(break)ことはできない!

スクリプトの見直しが必要だ。for文やsomeメソッドの使用を検討しよう。

二次元配列とGASのforeach

二次元配列の場合でもforeachは強力だ。

二次元配列のforeach

二次元配列を含むデータでは、二重にforeachを効かせるといい。

 const matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
matrix.forEach(row => {
  row.forEach(value => {
    Logger.log(value);
  });
}); 

各要素が順番に出力されることで、二次元配列を簡単に扱える。

二次元配列もforeachでうまく扱えるんだね。これなら難しくないかも!
猫男
猫男

応用編:GASで二次元配列や連想配列を使ったforeach

応用編まで駆け抜けるぞ!

getRange と foreachを使おう

スプレッドシートのデータを取得し、操作する際にも使える。getRangeと配列を組み合わせよう。

 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getRange('A1:C3');
const values = range.getValues();

values.forEach(row => {
  row.forEach(value => {
    Logger.log(value);
  });
}); 

スプレッドシートのデータを配列形式で取得し、foreachでそれぞれの値を出力している。

本当にいろんな場面で使えるんだね!GASのforeachがいまでは友だちみたいだ。
猫男
猫男

練習問題:GASのforeachを試してみよう

以下のスクリプトを完成させて、1から10までの偶数だけをログに出力してみてください。

 const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// ここにforeachを使った処理を書く

解答と解説

完成したスクリプトはこちらです。

 const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
numbers.forEach((number) => {
  if (number % 2 === 0) {
    Logger.log(number); // 偶数のときログに出力
  }
}); 

解説:
numbersという配列から始め、forEachメソッドを使用し、配列の各要素にアクセスしています。
number % 2 === 0で偶数を判断し、条件が一致する場合にのみLogger.logで出力しています。