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だけ 条件を満たすときだけ処理する
ifとelse:満たすときと満たさないときで分ける
function ifElseSample() {
const i = 3;
if (i === 5) {
console.log('5と等しい');
} else {
console.log('5じゃない');
}
}
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つ以上に分ける
比較演算子を使った条件の書き方
条件式には、比較演算子を使います。よく使うものは次のとおりです。
| 書き方 | 意味 |
|---|---|
a === b | aとbが等しい |
a !== b | aとbが等しくない |
a > b / a < b | aがbより大きい / 小さい |
a >= b / a <= b | aがb以上 / 以下 |
function compareSample() {
const i = 7;
if (i === 5) {
console.log('5と等しい');
} else if (i > 5) {
console.log('5より大きい');
} else {
console.log('5より小さい');
}
}
GAS 比較演算子を使った条件の書き方
== と === の違いなど、演算子の詳しい説明はこちらの記事にまとめています。

複数の条件を組み合わせる(&&・||・!)
&&(かつ):すべての条件を満たすとき
function andSample() {
const jpn = 85;
const eng = 80;
if (jpn >= 80 && eng >= 80) {
console.log('合格');
} else {
console.log('不合格');
}
}-すべての条件を満たすとき.png)
GAS &&(かつ) すべての条件を満たすとき
||(または):どれか1つでも満たすとき
function orSample() {
const animal = '象';
if (animal === '象' || animal === '馬') {
console.log('草食系');
} else if (animal === '虎' || animal === '豹') {
console.log('肉食系');
}
}
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 で整えると対応しているカッコが確認しやすくなります。

条件が多いときは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文も便利
生成AIに書かせるときのコツ
ChatGPTやClaudeに条件分岐を書かせるときは、「80点ちょうどはどちらに含めるか」「空欄のときはどうするか」など、境界と例外の扱いを具体的に伝えましょう。
できたコードは、79・80・81のように境界の値で試すと、間違いに気づきやすくなります。
まとめ
- 条件分岐は
if、else if、elseで書く。上から順に調べられ、最初に当てはまった1つだけが実行される - 比較は
===、複数条件は&&(かつ)と||(または) - else ifは厳しい条件から先に書く
- 等しいかどうかの判定が多いときは switch 文も検討する
