【GAS】コピペで使えるswitch、case、複数条件【サンプルコード】

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

GASのswitchメソッドをコピペで使えるサンプルコードを公開しています。
ダウンロードして使用できるGASのswitchコードも公開中です。

GASのswitch基本形

switch(条件に使用する値){
 case 10:
  //値が10だった場合の処理;
  break; //処理を抜ける
 case 20:
  //値が20だった場合の処理;
  break;
 default:
  //どれにも当てはまらなかった場合の処理;
  break;
}

GASのswitchでセルから値を取得して特定の条件で処理

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

  //セルの値(A1)を取得
  var value = sheet.getRange('A1').getValue();

  switch(value){
    case 10:
      //値が10だった場合の処理;

      break;

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

      break;

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

      break;
  }
}

比較演算子を使用してswitch処理

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

  //セルの値(A1)を取得
  var value = sheet.getRange('A1').getValue();

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

      break;

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

      break;

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

      break;
  }
}
比較演算子意味
'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以上

switchでandやorを使って条件分岐

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

  //セルの値(A1)を取得
  var value = sheet.getRange('A1').getValue();

  switch(true){
    case value === ' ' || value === ' ':
      //値に半角スペース、または全角スペースが入っている時の処理

      break;

    case value >= 10 && value <= 20:
      //値が10以上20以下の時の処理

      break;

    default:
      //どれにも当てはまらなかった場合の処理;
      break;
  }
}
and(または)条件1 && 条件2条件1、または条件2に当てはまる時
or(かつ)条件1 || 条件2条件1、条件2どちらも当てはまる時

GASでswitch使用時の注意点とエラー回避

GASのswitchでよくあるエラーや躓きやすいポイント

保存できない・エラーが出る

  • case使用時のセミコロンとコロンの間違い
スポンサーリンク

基本的にGASコードは行の最後に「;」(セミコロン)をつけますが、
switchのcaseを使用する時は「:」(コロン)を使用します。
ここが間違っているとエラーで保存できません。

意図しない動きや思った通りの結果が得られない時

  • breakが記述されていない

breakは、現在行なっているswitch文の処理を抜けるためのコードです。
このBreakがないと、次のcaseの処理も続けて行なってしまい、
意図しない動きになってしまうことがあります。

breakがない場合

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

例えば値が「5」だった場合、
まず最初のcaseの「値 \<= 10」はtrueとなるため処理が行われます。
終わったら次の処理も行われ、「値 \<= 20」はtrueとなるためこちらの処理も行われます。
Breakがある場合

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

例えば値が「5」だった場合、
最初のcaseの「値 \<= 10」はtrueとなり処理が行われます。
breakでswitchの処理を抜けその後の処理は行われません。

  • 記述の順番の問題で処理が行われない

プログラムは基本的に上から順番に処理がされていくため、
先に記述した処理が優先して行われます。

スポンサーリンク

例えば、「値 \<= 10」と「値 \<= 20」という処理を行う場合、
「値 \<= 20」を先に記述してしまい、breakで抜けてしまうとその後の処理は行われないため、
値が「5」でも「15」でも、同じ処理が行われることになります。

switch(true){
  case 値 <= 20:
    //値が20以下だった場合の処理; //ここが先に処理される①
    break;

  case 値 \<= 10:
    //値が10以下だった場合の処理; //①がtrueのためここは行われない
    break;
}

breakがなければどちらの処理も行われますが、処理が重複して行われてしまうため注意が必要です。

 

  • defaultが記述されていない

defaultは、switch文の中のどのcaseの条件にも当てはまらなかった場合に行われる処理です。

defaultがなくてもエラーにはなりませんが、意図しない動きを未然に防ぐためにも、caseとセットで使用します。

switch(true){
 case 値 <= 10:
  //値が10以下だった場合の処理;
  break;
 case 値 <= 20:
   //値が20以下だった場合の処理;
   break;
 default:
   どれにも当てはまらなかった場合の処理;
   break;
}

 

  • 比較演算子が間違って記述されている

caseの条件処理で、比較演算子が間違って記述されていると、
意図しない動きになってしまいます。

比較演算子意味
'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以上

and(または)条件1 && 条件2条件1、または条件2に当てはまる時
or(かつ)条件1 || 条件2条件1、条件2どちらも当てはまる時

GASのswitchダウンロードして使えるデータ

GASのswitchのcaseで複数処理をするサンプルデータはこちらからダウンロードできます。
GASのswitchデータのダウンロードと使い方

サンプルデータでは、セルの空欄判定や、スペースの有無などの判定を行なっています。
実際の動きを確認して使ってみてください。

このサイトでは各記事でサンプルコードやダウンロードデータを公開しています。
実際に動かしたり、コピペで使えるコードを入れているデータもありますので、コピーして使用してみてください。

 

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

スポンサーリンク

コメント

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