【GAS】if文の使い方|if・else if・elseの書き方と複数条件(&&・||)の例

受講料の最大70%の給付金あり
経済産業省リスキリングを通じたキャリアアップ支援事業対象
サムライエンジニア「生成AI」コース

GASで「○○のときだけ処理する」という条件分岐は、if文で書きます。基本の形は次のとおりです。

if (条件式1) {
  // 条件式1を満たすときの処理
} else if (条件式2) {
  // 条件式1を満たさず、条件式2を満たすときの処理
} else {
  // どの条件も満たさないときの処理
}
  • else if と else は省略できます
  • else if はいくつでもつなげられます
  • 上から順に調べられ、最初に当てはまった1つだけが実行されます

この記事では、基本の書き方から、複数の条件の組み合わせ方、スプレッドシートでの使い方、よくある間違いまで解説します。



※本ページはプロモーションが含まれています

スポンサーリンク
スポンサーリンク

if・else・else ifの基本

ifだけ:条件を満たすときだけ処理する

function ifSample() {
  const str = '猫';
  if (str === '猫') {
    console.log('猫である');
  }
}
GAS ifだけ 条件を満たすときだけ処理する

GAS ifだけ 条件を満たすときだけ処理する

ifとelse:満たすときと満たさないときで分ける

function ifElseSample() {
  const i = 3;
  if (i === 5) {
    console.log('5と等しい');
  } else {
    console.log('5じゃない');
  }
}
GAS ifとelse 満たすときと満たさないときで分ける

GAS ifとelse 満たすときと満たさないときで分ける

else if:3つ以上に分ける

function elseIfSample() {
  const str = '馬';
  if (str === '猫') {
    console.log('猫である');
  } else if (str === '馬') {
    console.log('馬である');
  } else {
    console.log('猫でも馬でもない');
  }
}
GAS else if 3つ以上に分ける

GAS else if 3つ以上に分ける

比較演算子を使った条件の書き方

条件式には、比較演算子を使います。よく使うものは次のとおりです。

書き方意味
a === baとbが等しい
a !== baとbが等しくない
a > b / a < baがbより大きい / 小さい
a >= b / a <= baがb以上 / 以下
function compareSample() {
  const i = 7;
  if (i === 5) {
    console.log('5と等しい');
  } else if (i > 5) {
    console.log('5より大きい');
  } else {
    console.log('5より小さい');
  }
}
GAS 比較演算子を使った条件の書き方

GAS 比較演算子を使った条件の書き方

== と === の違いなど、演算子の詳しい説明はこちらの記事にまとめています。

【GAS】比較演算子・論理演算子の一覧|==と===の違い、ノットイコール、&&・||の使い方
GAS(JavaScript)で条件を書くときは、まず次の5つを覚えれば十分です。 やりたいこと GAS VBA 等しい === = 等しくない(ノットイコール) !== <&g...

複数の条件を組み合わせる(&&・||・!)

&&(かつ):すべての条件を満たすとき

function andSample() {
  const jpn = 85;
  const eng = 80;
  if (jpn >= 80 && eng >= 80) {
    console.log('合格');
  } else {
    console.log('不合格');
  }
}
GAS &&(かつ) すべての条件を満たすとき

GAS &&(かつ) すべての条件を満たすとき

||(または):どれか1つでも満たすとき

function orSample() {
  const animal = '象';
  if (animal === '象' || animal === '馬') {
    console.log('草食系');
  } else if (animal === '虎' || animal === '豹') {
    console.log('肉食系');
  }
}
GAS ||(または):どれか1つでも満たすとき

GAS ||(または):どれか1つでも満たすとき

!(ではない):条件を反転する

const done = false;
if (!done) {
  console.log('まだ終わっていない');
}

スプレッドシートの値で分岐する

実務では、シートの値を読み込んで分岐することがほとんどです。次の例は、B列の「ステータス」が「完了」の行だけ、C列に「済」と書き込みます。

function markDone() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  for (let row = 2; row <= lastRow; row++) {
    const status = sheet.getRange(row, 2).getValue();
    if (status === '完了') {
      sheet.getRange(row, 3).setValue('済');
    }
  }
}

行数が多いときは、getValues() でまとめて読み込んでから判定すると、処理がずっと速くなります。

よくある間違い

① 条件の中で = を使ってしまう

if (str = '猫') と書くと、比較ではなく代入になり、条件は常に成立します。比較は === です。VBAに慣れていると特にやりがちなので注意してください。

② else ifの順番を間違える

上から順に調べられるため、広い条件を先に書くと、後ろの条件に届きません。

const score = 90;
// × 90点でも「合格」になってしまう
if (score >= 60) {
  console.log('合格');
} else if (score >= 80) {
  console.log('優秀');
}

// ○ 厳しい条件から先に書く
if (score >= 80) {
  console.log('優秀');
} else if (score >= 60) {
  console.log('合格');
}

③ { } を省略する

処理が1行なら { } を省略しても動きますが、後から行を足したときに意図しない動きになりやすいので、常に書いておくのが安全です。インデントが崩れたときは、Shift+Alt+F で整えると対応しているカッコが確認しやすくなります。

【GAS】インデントを一発で整える方法|Shift+Alt+Fでコードを自動整形
GASのインデント(行の頭の位置)は、次のショートカットで一発で整えられます。 OS ショートカット Windows Shift + Alt + F Mac Shift + Option + ...

条件が多いときはswitch文も便利

「値が○○のとき」という等しいかどうかの判定が並ぶ場合は、switch文で書くと読みやすくなります。

function switchSample() {
  const animal = '虎';
  switch (animal) {
    case '象':
    case '馬':
      console.log('草食系');
      break;
    case '虎':
    case '豹':
      console.log('肉食系');
      break;
    default:
      console.log('分類なし');
  }
}

break を書き忘れると次の case の処理まで実行されるので注意してください。

GAS 条件が多いときはswitch文も便利

GAS 条件が多いときはswitch文も便利

生成AIに書かせるときのコツ

ChatGPTやClaudeに条件分岐を書かせるときは、「80点ちょうどはどちらに含めるか」「空欄のときはどうするか」など、境界と例外の扱いを具体的に伝えましょう。

できたコードは、79・80・81のように境界の値で試すと、間違いに気づきやすくなります。

まとめ

  • 条件分岐は if、else if、else で書く。上から順に調べられ、最初に当てはまった1つだけが実行される
  • 比較は ===、複数条件は &&(かつ)と ||(または)
  • else ifは厳しい条件から先に書く
  • 等しいかどうかの判定が多いときは switch 文も検討する
タイトルとURLをコピーしました