Script

【GAS】条件分岐の基本 if文、三項演算子(条件演算子)、switch文

Google Apps Scriptで条件分岐は書けたほうがいいです。

基本的なやり方を知っておけばそんなに難しくないので、いくつか紹介します。

if文

三項演算子(条件演算子)

switch

↓のような条件分岐を、それぞれのパターンごとに説明します。

18だったら「ジャストです!」を出力

19以上だったら「大人です!」を出力

18未満だったら「子供です!」を出力

上記の3つ以外の場合は「おいおいおい、なにか間違えてないかい?」を出力

if文 – 条件分岐の基本パターン

taroが18なのか、18以上なのか、18未満なのかによって条件分岐を行っています。

const ageCheck = () => {
  const taro = 17

  if (taro === 18) {
    console.log('ジャストです!')
  } 
  else if (taro > 18) {
    console.log('大人です!')
  } 
  else if (taro < 18) {
    console.log('子供です!')
  }
  else {
    console.log('おいおいおい、なにか間違えてないかい?')
  }
}

実行結果

taroは17なので「子供です!」が出力されます。

if文による条件分岐の書き方

↓のような構文です。

if文の構文

if (条件式1){ 処理文1 } else if (条件式2) { 処理文2 } else if (条件式3) { 処理文3 } ……else { 処理文 }

ifと条件式の()の間にスペースを入れても入れなくても構いません。

多少読みやすくなるので私は入れます。


{ }の中には条件式がtrueだったときに実行される文を入れます。

つまり、if (taro === 18)がtrueだったときにconsole.log(‘ジャストです!’)が実行されます。

===の意味


条件式のtaro === 18で使っている===はtaroと18が等しいかを厳しく判定しています。

ゆるく判定する場合は==を使います。

===を使う場合は値の判定に加えて型、オブジェクトの判定もします。==は値の判定だけです。

==の場合は↓はtrueになります。

const valueCheck = () => {
  const taro = 17
  const jiro = '17'
  console.log(taro == jiro)
}
// 出力結果 true


===はfalseです。

const valueCheck = () => {
  const taro = 17
  const jiro = '17'
  console.log(taro === jiro)
}
// 出力結果 false


taroは17という数値で、jiroは17という文字列です。

==は型が違っても「同じ」と判定しますが、===は「違う」と判定します。


要するにどっち使えばいいのかってゆーと、===です

==は使用禁止とおぼえておけばいいです。

最後に使っているelse

taroが数値の18ではない、19以上でもない、18未満でもない場合にelseの文が実行されます。

具体的にはtaroに文字列の18を代入した場合等です。どの条件にもひっかからないですからね。

const ageCheck = () => {
  const taro = '18'

  if (taro === 18) {
    console.log('ジャストです!')
  } 
  else if (taro > 18) {
    console.log('大人です!')
  } 
  else if (taro < 18) {
    console.log('子供です!')
  }
  else {
    console.log('おいおいおい、なにか間違えてないかい?')
  }
}

実行結果

条件式で利用できる比較演算子

比較演算子というのは===や==などのように2つの値を比較する機能を持った記号です。

比較して条件に当てはまる場合はtrueを返し、そうではない場合はfalseを返します。

比較演算子説明
== (等価)2つの値が等しいかゆるく判定const taro = 17
taro == ’17’
→true(同じ)
=== (厳密等価)2つの値が等しいか厳しく判定const taro = 17
taro === ’17’
→false(違う)
!= (不等価)2つの値が異なるかゆるく判定const taro = 17
taro != ’17’
→false(同じ)
!== (厳密不等価)2つの値が異なるか厳しく判定const taro = 17
taro !== ’17’
→true(違う)
> (大なり)左の値が右よりも大きいか判定const taro = 17
taro > 18
→false (違う)
< (小なり)左の値が右よりも小さいか判定const taro = 17
taro < 18
→true (小さい)
>= (以上)左の値が右以上か判定const taro = 17
taro >= 18
→false(違う)
<= (以下)左の値が右以下か判定const taro = 17
taro <= 18
→true (以下)

三項演算子(条件演算子)

if文の代わりに三項演算子を利用することもできます。条件演算子と呼ばれることもあります。

↓こういうやつです。

const ageCheck = () => {
  const taro = 17

  taro === 18 ? console.log('ジャストです!')
    : taro > 18 ? console.log('大人です!')
    : taro < 18 ? console.log('子供です')
    : console.log('おいおいおい、なにか間違えてないかい?')
}

実行結果

三項演算子(条件演算子)の構文

条件式1 ? 処理文1 : 条件式2 ? 処理文2 : 条件式3 ? 処理文3….. : 処理文


もう少し単純な三項演算子を例にとって説明します。

const nameCheck = () => {
  const name = 'taro'

  name === 'taro' ? console.log('太郎です') : console.log('太郎ではありません')
}

最初にname === ‘taro’という条件式がきています。

この条件式がtrueのときに?から:までの処理が実行されます。

よってname変数に入っているのがtaroという文字列の場合、実行ログに「太郎です」が出力されます。

実行結果


もしname変数がtaroという文字列ではなかった場合は、:以降の処理が実行されます。

const nameCheck = () => {
  const name = 'jiro'

  name === 'taro' ? console.log('太郎です') : console.log('太郎ではありません')
}

実行結果

つまり、?から:まではtrueの場合の処理、:以降はfalseの場合の処理が実行されます。

if〜else〜と同じ感じですね。


:のうしろにさらに条件式をつけて、else if文のようなこともできます。

それが↓これ

const ageCheck = () => {
  const taro = 17

  taro === 18 ? console.log('ジャストです!')
    : taro > 18 ? console.log('大人です!')
    : taro < 18 ? console.log('子供です')
    : console.log('おいおいおい、なにか間違えてないかい?')
}

switch文 – 等しいかどうか判定する条件分岐

if、三項演算子の他にswitch文というのもあります。

複数の条件で等しいかどうかを判定するときに使います。

const trySwitch = () => {
  const name = 'taro'

  switch (name) {
    case 'taro':
    console.log('太郎!いい服を着ているな')
    break

    case 'jiro':
    console.log('次郎!夜風に当たりすぎるなよ')
    break

    default:
    console.log('父さん、もう寝るよ')
  }
}

実行結果

name変数の値をcaseで場合分けして、等しいかどうか判定しています。

たとえばcase ‘taro’:はname変数の値がtaroという文字列と等しいかどうか判定しています。

等しければconsole.log(‘太郎!いい服を着ているな’)が実行されます。

switch文のbreakとは

処理がbreakに到達すると、switch文は終了します。

なんだかよくわからないですよね。

実例を見るとわかりやすいかもしれません。たとえばbreakを書かないとします。

const trySwitch = () => {
  const name = 'taro'

  switch (name) {
    case 'taro':
    console.log('太郎!いい服を着ているな')

    case 'jiro':
    console.log('次郎!夜風に当たりすぎるなよ')

    default:
    console.log('父さん、もう寝るよ')
  }
}

実行結果

なにやら珍妙な実行結果が得られてジーザスです。


breakを書かないとswitch文が終了せず、次のcaseに該当しなくても処理がそのまま実行されてしまいます。


要するにcaseごとに必ずbreakは書けよ、という話です。

switch文のdefaultとは

switch文のdefaultは、caseで書かれた条件式にすべて当てはまらなかった場合です。

if文のelse ifの条件式にすべて当てはまらなかった場合に最後のelseで最終処理されるのと同じです。

const trySwitch = () => {
  const name = 'tamagoro'

  switch (name) {
    case 'taro':
    console.log('太郎!いい服を着ているな')
    break

    case 'jiro':
    console.log('次郎!夜風に当たりすぎるなよ')
    break

    default:
    console.log('父さん、もう寝るよ')
  }
}

実行結果


YES

Copied title and URL