【GAS】switchのcaseで複数処理、GASのswitchで複数分岐まとめ【サンプルコード】

GAS基本メソッド
この記事は約7分で読めます。

GASでswitchのcaseのダウンロードサンプルコード公開しています。
GASでswitch文は条件分岐を複数処理したい時に、シンプルに書くことができて便利です。

caseで複数分岐も、switch文ならわかりやすくなります。

この記事で説明しているメソッド・構文

スポンサーリンク

switch
case
break
default
isBlank()

GASのswitch文のcaseで複数処理

switch文で複数条件を扱う場合、caseで条件分岐していきます。

switch(条件に使用する値){
case 10:
値が10だった場合の処理;
break;

case 20:
値が20だった場合の処理;
break;

default:
どれにも当てはまらなかった場合の処理;
break;
}

switch文を使用するときは、caseの後ろは「:」(コロン)を使用します。
通常GASの処理では最後に「;」(セミコロン)をつけますが、
caseの後ろはセミコロンを使用するとエラーになるので注意してください。

また、caseとbreakをセットで使用します。
breakはその処理を抜ける構文で、次の処理を行わずにswitch文を抜けて処理を終了します。

breakがないと、次の処理も続けて行なってしまい、
全ての処理が最後のdefaltの処理になってしまうため忘れないようにしてください。

defaultはcaseで当てはまらなかった場合の処理を書いていきます。
なくてもエラーにはなりませんが、意図しない結果になってしまったりするため、
セットで書くものだと思ってください。

caseで条件分岐サンプルコード

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //値を取得
  var value = sheet.getRange('C6').getValue();

  switch(value){
    case 10:
    sheet.getRange('C3').setValue('10です');
    break;

    case 20:
    sheet.getRange('C3').setValue('20です');
    break;

    default:
    sheet.getRange('C3').setValue('それ以外です');
    break;
  }
}

GASのswitch文で比較演算子を使って条件分岐

switch文で比較演算子を使用するには、switch(true)またはswitch(false)という感じで書いていきます。

switch(true){
case 値 <= 10:
値が10以下だった場合の処理;
break;

case 値 <= 20:
値が20以下だった場合の処理;
break;

default:
どれにも当てはまらなかった場合の処理;
break;
}

switch(true)とした場合は、caseで書いている条件に従って、trueの場合に処理を実行します。
~

比較演算子意味
'a' == 'b'aとbは等しい(データ型は含まない)
'a' === 'b'aとbは等しい(厳密、データ型も含む)
'a' != 'b'aとbは等しくない(データ型は含まない)
'a' !== 'b'aとbは等しくない(厳密、データ型も含む)
'a' < 'b'bよりaは小さい
'a' > 'b'bよりaは大きい
'a' <= 'b'aはb以下
'a' >= 'b'aはb以上

基本的にプログラムは上から順番に処理を行なっていくため、
「case 値 <= 20:」を先に書いてしまうとそちらの処理が優先されるので、
その下に「case 値 <= 10:」と書いても処理されなくなってしまいます。

比較演算子を使用する場合はこの辺りを気をつけて使用してください。

caseで比較演算子を使用した条件分岐サンプルコード

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //値を取得
  var value = sheet.getRange('C6').getValue();

  switch(false){
    case value >= 10:
    sheet.getRange('C3').setValue('10以下の数値です');
    break;

    default:
    sheet.getRange('C3').setValue('それ以外です');
    break;
  }
}

switch文でandやorで比較演算子を使用して条件分岐

スポンサーリンク

GASのswitch文でand、orのような「○○かつ● ●」、「○○または● ●」という条件で分岐させることもできます。
andやorを使用するには、and は &&or は|| を使います。

switch(true)
case 値 === A || value === B:
値がAまたはBの時の処理;
break;

case 値 >= 10 && value <= 20:
値が10以上、かつ20以下の時の処理;
break;

default:
それ以外の時の処理;
break;
}

GASのswitch文でand(&&)、or(||)を使用したサンプルコード

switch(true){
  case value === ' ' || value === ' ':
    sheet.getRange('C3').setValue('空白が入っています');
    break;

  case value >= 10 && value <= 20:
    sheet.getRange('C3').setValue('値は10以上20以下です');
    break;

  default:
    sheet.getRange('C3').setValue('入力されています');
    break;
}

if文の時と同じように使用することができるので、条件分岐させたい方法に合わせて使用してください。

switch文で空白かどうかで条件分岐させる

switch文はisBlank()を組み合わせて空白セルかどうか?で条件分岐させて使用することも可能です。

var range = sheet.getRange('範囲');

switch(true)
case range.isBlank():
空セルだった場合の処理;
break;

default:
それ以外の場合の処理;
break;
}

空白かどうかを調べるisBlankはスペースが入っていると空とは見なされないので気をつけて使用してください。

switch文で空白かどうかを調べるサンプルコード

//範囲と値を取得
var range = sheet.getRange('C6');
var value = sheet.getRange('C6').getValue();

switch(false){
  case range.isBlank():
    switch(true){
      case value === ' ' || value === ' ':
        sheet.getRange('C3').setValue('空白が入っています');
        break;
      default:
        sheet.getRange('C3').setValue('入力されています');
        break;
    }
    break;

    default:
      sheet.getRange('C3').setValue('空セルです');
      break;
}

GASのswitchのcaseで複数処理をするサンプルデータ

switchでcaseを使用して複数処理をするサンプルデータはこちらからダウンロードしてください。
【Copori】switch文のcaseで複数処理サンプル

複数処理サンプルデータの使い方

1、【Copori】switch文のcaseで複数処理サンプルを開いてコピーしてください

3、メニューから「拡張機能」⇨「Apps Script」を開きます
※複数アカウントでログインしているとエラーで開けないので注意してください

4、GASの実行をして確認してみてください
このサンプルコードでは、C6セルの値がswitch文で分岐され、setValueで実行結果に入力するようになっています。
初回のみ権限取得が必要です。取得方法はこちら

5、初期化する時は、C9のチェックボックスにチェックを入れてください
(実行完了すると、C3、C6が空欄になってC9のチェックが外れます)

今回のサンプルデータで使用しているGASのコードは、記事の前半で解説しているので、動きを見ながら確認してみてください。

if文の処理と同じことをしているので併せて確認してみてください。
【GAS】スプレッドシートif文セルの値の複数処理、空白かどうかisBlank()【Google Apps Script】

ありがとうございました!

スポンサーリンク

コメント

タイトルとURLをコピーしました