GASの条件分岐(if文)とループ処理(for/while)の書き方

先生

GASで条件分岐とループ処理をマスターして、スプレッドシート操作を自動化しよう!

GASで条件分岐!if文の基本と応用

Google Apps Script(GAS)で、条件によって処理を変えるための基本となるのがif文です。この記事では、GASにおけるif文の基本的な書き方から、else ifを使った複数条件の分岐、ネスト(入れ子)構造まで、分かりやすく解説します。

if文は、指定された条件が真(true)の場合に、特定の処理を実行します。条件が偽(false)の場合には、何も実行しないか、elseブロックに記述された別の処理を実行します。

function conditionalBranching(value) {
  if (value > 10) {
    Logger.log("Value is greater than 10");
  } else {
    Logger.log("Value is not greater than 10");
  }
}

上記の例では、valueが10より大きいかどうかを判定し、その結果に応じて異なるメッセージをログに出力しています。

else ifを使うと、複数の条件を順番に評価し、最初に真となる条件に対応する処理を実行できます。

function gradeCheck(score) {
  if (score >= 90) {
    Logger.log("Grade: A");
  } else if (score >= 80) {
    Logger.log("Grade: B");
  } else if (score >= 70) {
    Logger.log("Grade: C");
  } else {
    Logger.log("Grade: D");
  }
}

if文の中に別のif文を記述することで、より複雑な条件分岐を表現できます。

function nestedIf(x, y) {
  if (x > 0) {
    if (y > 0) {
      Logger.log("x and y are positive");
    } else {
      Logger.log("x is positive, but y is not");
    }
  } else {
    Logger.log("x is not positive");
  }
}

GASで繰り返し処理!for文とwhile文の徹底解説

GASで同じ処理を繰り返すには、for文while文といったループ処理が欠かせません。ここでは、それぞれの文法の基本、使い分け、具体的な使用例を解説します。

for文は、初期化、条件、更新の3つの要素を指定して、指定された回数だけ処理を繰り返します。

function forLoopExample() {
  for (let i = 0; i < 5; i++) {
    Logger.log("Iteration: " + i);
  }
}

上記の例では、iが0から4まで変化しながら、Logger.logが5回実行されます。

while文は、指定された条件が真である限り、処理を繰り返します。条件が最初から偽である場合、処理は一度も実行されません。

function whileLoopExample() {
  let i = 0;
  while (i < 5) {
    Logger.log("Iteration: " + i);
    i++;
  }
}

上記の例では、iが5未満である限り、Logger.logが実行され、iがインクリメントされます。

for...in文は、オブジェクトのプロパティを列挙するために使用されます。

function forInLoopExample() {
  const person = { name: "Taro", age: 30, city: "Tokyo" };
  for (let key in person) {
    Logger.log(key + ": " + person[key]);
  }
}

for...of文は、配列や文字列などの反復可能オブジェクトの要素を順番に処理するために使用されます。

function forOfLoopExample() {
  const colors = ["red", "green", "blue"];
  for (let color of colors) {
    Logger.log(color);
  }
}

GASの条件分岐とループ処理を組み合わせた応用例

条件分岐とループ処理を組み合わせることで、より複雑な処理を実現できます。例えば、スプレッドシートのデータを読み込み、特定の条件を満たす行だけを処理したり、APIから取得したデータを繰り返し処理して、必要な情報を抽出したりすることができます。

function processSpreadsheetData() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const range = sheet.getDataRange();
  const values = range.getValues();

  for (let i = 1; i < values.length; i++) { // Skip header row
    const name = values[i][0];
    const score = values[i][1];

    if (score >= 60) {
      Logger.log(name + ": Passed");
    } else {
      Logger.log(name + ": Failed");
    }
  }
}

上記の例では、スプレッドシートの各行をループ処理し、スコアが60点以上かどうかで合否を判定しています。

参考リンク

まとめ

この記事では、GASにおけるif文による条件分岐と、for文while文によるループ処理について解説しました。これらの基本的な構文を理解し、組み合わせることで、GASでのプログラミングの幅が大きく広がります。ぜひ、色々なコードを書いて試してみてください。