GoogleAppsScript

【GAS】for文(繰り返し)を解説|break,continue,for-ofの使い方について

GASのfor文解説

Google Apps Script(GAS)におけるfor文(繰り返し処理)の活用方法を徹底解説します。

この記事では、for文を使った効果的なループ制御や、ループ内での特定の条件下での操作方法を学びます。

また、for文の応用としてのbreak文、continue文、さらにはfor-of文についても紹介します。

GASのfor文について

プログラム内で同じ処理を繰り返すためにfor文を使用します。基本的な構文と使い方、ループ変数の設定、ループ条件の設定について学びましょう。

for 文の構文と基本的な使い方

for文は、指定した回数だけ処理を繰り返す際に使います。構文は以下の通りです。

for (初期化; 条件式; 更新式) {
  // 繰り返す処理
}

基本的な使い方の例を見てみましょう。

for (let i = 0; i < 5; i++) {
  Logger.log("現在の値は: " + i);
}

カウンター変数とループ条件

カウンター変数は繰り返しのたびに変化する変数であり、ループ条件は繰り返しの終了条件を示します。

これらをうまく設定することで、正確な繰り返し処理を行うことができます。

for (let i = 初期値; 条件式; 更新式) {
  // 繰り返す処理
}

カウンター変数

カウンター変数は、繰り返しのたびに変化するカウンターのような役割を果たします。

通常、let i = 初期値 の形で初期化されます。更新式で変数を増減させることで、繰り返しの制御を行います。

for (let i = 1; i <= 10; i++) {
  Logger.log("現在の値は: " + i);
}

ループ条件

ループ条件は、繰り返しの継続か終了かを判断するための式です。

条件式が真(True)である限り、繰り返し処理が続きます。

条件式が偽(False)になった時点でループが終了します。

for (let i = 1; i <= 10; i++) {
  Logger.log("現在の値は: " + i);
} 
// iが10より大きくなったら「False」判定となるため、ループが終了します

GASのfor文の例について

for文を使って、数字のカウントアップ、配列の要素を処理する方法、そしてループを使ったテーブルの生成について学びましょう。

数字のカウントアップ

for文を使用して、指定した範囲内の数字をカウントアップする方法を見てみましょう。ループは10回繰り返されます。

for (let i = 1; i <= 10; i++) {
  Logger.log("現在の値は: " + i);
  // ループの停止条件: iが10を超えたらループ終了
}

配列の要素を処理する

配列の要素を順番に処理するためにもfor文を活用できます。

以下は果物の配列をループして要素を表示する例です。

let fruits = ["りんご", "バナナ", "オレンジ", "ぶどう"];
for (let i = 0; i < fruits.length; i++) {
  Logger.log("フルーツ: " + fruits[i]);
  // ループの停止条件: iが配列の要素数を超えたらループ終了
}

ループを使ったテーブルの生成

for文を使用して、テーブルのような形式を生成する方法を紹介します。

以下は5行3列のテーブルを生成する例です。

let rows = 5;
let cols = 3;

for (let i = 1; i <= rows; i++) {
  let row = "";
  for (let j = 1; j <= cols; j++) {
    row += i * j + "\t";
  }
  Logger.log(row);
  // ループの停止条件: iが行数を超えたらループ終了
}

GASのブロックスコープについて

プログラム内で変数がどの範囲で有効かを制御する変数のスコープ。

その基本的な概念を理解し、ブロックスコープの利用法とメリットについて学びましょう。

変数のスコープとは?

変数のスコープは、その変数がどの範囲で有効かを示します。

ブロックスコープとは、主にif文やfor文、関数などで囲まれる「ブロック」内で変数の有効範囲を限定することです。

if (条件) {
  // ここがブロック
  let x = 10; // xはこのブロック内で有効
}
// ここからxはアクセスできない

ブロックスコープの利用法とメリット

ブロックスコープを使うことで、変数の有効範囲を適切に制御できます。

これにより、プログラム内での変数の衝突や不具合を防ぐことができ、コードの保守性や読みやすさを向上させることができます。

function calculateTotal(arr) {
  let total = 0; // 関数内でのみ有効な変数
  for (let num of arr) {
    total += num;
  }
  return total;
}

GASのbreak文とcontinue文について

ループ処理の中で特定の条件下でのみ使用される、break文とcontinue文について学びましょう。

これらの文を使うことで、ループの中断や次の繰り返しステップへの移行が可能となります。

break文:ループの中断

break文は、ループ内で特定の条件が満たされた場合に、そのループを中断して終了します。

以下の例では、特定の数値に到達した時にループを中断します。

for (let i = 1; i <= 10; i++) {
  if (i === 5) {
    break; // ループを中断
  }
  Logger.log("値: " + i);
}

continue文:次の繰り返しステップへの移行

continue文は、特定の条件が満たされた場合に、現在の繰り返しステップをスキップして次のステップに移行します。

以下の例では、奇数の場合に次の繰り返しステップへ移行します。

for (let i = 1; i <= 5; i++) {
  if (i % 2 === 0) {
    continue; // 偶数なら次のステップへ
  }
  Logger.log("奇数: " + i);
}

GASのfor-of文について

for-of文を使って、配列要素の取得やイテラブルオブジェクトの処理方法について学びましょう。

for-of文の構文と配列要素の取得

for-of文は、配列などのイテラブルオブジェクト内の要素を簡潔に順番に取得するための文法です。

let fruits = ["りんご", "バナナ", "オレンジ"];
for (let fruit of fruits) {
  Logger.log("フルーツ: " + fruit);
}

イテラブルオブジェクトの処理

for-of文は、配列だけでなく、文字列やMap、Setなどのイテラブルオブジェクトでも利用できます。以下は文字列を文字ごとに処理する例です。

let text = "Hello";
for (let char of text) {
  Logger.log("文字: " + char);
}