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データのダウンロードと使い方
サンプルデータでは、セルの空欄判定や、スペースの有無などの判定を行なっています。
実際の動きを確認して使ってみてください。
このサイトでは各記事でサンプルコードやダウンロードデータを公開しています。
実際に動かしたり、コピペで使えるコードを入れているデータもありますので、コピーして使用してみてください。
ありがとうございました!
コメント