スプレッドシートのGASでif文を使用する時に、
getValueでセルの値を複数処理したり、空白を判定してスキップをしたいという時があります。
この記事では基本的なif文についてと、複数処理、空白判定について書いています。
この記事で説明しているメソッド
if文
isBlank()
GASのif文でセルの値を複数条件分岐
GASでセルの値を条件分岐させるには、セルの値を取得してif文を使用します。
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var value = sheet.getRange('C6').getValue();
if(value <= 10){
sheet.getRange('C3').setValue('10以下の数値です');
}else{
sheet.getRange('C3').setValue('それ以外です');
}
}
サンプルコードでは、C6のセルの値を取得して、
if文で10以下かどうかの条件判定をしています。
条件分岐の比較演算子
比較演算子 | 意味 |
---|---|
'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以上 |
else以降でそれ以外の時の処理をしています。
条件に当てはまっていれば、「10以下です」という文字をC3に入力するようになっていますが、このままだと空白セルも「10以下です」という表示になってしまいます。
変数を使用しないif文はこちら
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
if(sheet.getRange('C6').getValue() <= 10){
sheet.getRange('C3').setValue('10以下です');
}
}
GASのif文でセルが空白かどうか調べる
GASのif文で空白セルかどうかの判定は、範囲を指定してisBlank()を使用しますが、
空のセルなのか、空白が入っているセルなのかによってはisBlank()は使えません。
isBlank()は、空のセル(何も入力していない)場合を判定できます。
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var range = sheet.getRange('C6');
//取得した記入欄のチェック
if(range.isBlank()){
sheet.getRange('C3').setValue('空セルです');
}
}
isBlank()はgetValue()の値ではなく、
範囲をgetRange()で取得してその範囲が空のセルかどうかを判断しています。
空白でないならを判断する場合
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var range = sheet.getRange('C6');
//取得した記入欄のチェック
if(range.isBlank() === false){
sheet.getRange('C3').setValue('空セルではありません');
}
}
セルに空白(スペース)が入っている場合は、isBlank()では空白とは見なされません。
空白(スペース)の判断をする場合は、isBlank()を使用せず、
空セルか、半角スペースなのか全角スペースなのかで判断もできます。
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var value = sheet.getRange('C6').getValue();
if(value === ''){
sheet.getRange('C3').setValue('空です');
}
if(value === ' '){
sheet.getRange('C3').setValue('全角スペースが入っています');
}
if(value === ' '){
sheet.getRange('C3').setValue('半角スペースが入っています');
}
}
「if(value === '')」=空セルかどうかの判断
「if(value === ' ')」=全角スペースかどうかの判断
「if(value === ' ')」=半角スペースかどうかの判断
if文で空白かどうかを調べる時の注意点
比較演算子は、「==」と「===」、「!=」と「!==」という書き方があり、
上の表では書いていませんが「==」や「!=」と書いてもエラーにはなりません。
この違いはデータ型まで比較するかどうかという違いで、「==」や「!=」とすると、思った通りの結果が得られないことがあります。
なので、厳密に比較をしたい場合は、「===」、「!=」を使用して比較するようにするのがおすすめです!
GASのif文でandやorを使う方法
GASのif文で「aまたはb」、「aかつb」のような、
andやorを使用するには、or は|| 、 and は && を使います。
function sample() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var value = sheet.getRange('C6').getValue();
//取得した記入欄のチェック
if(value <= 10 && value >= 1){
sheet.getRange('C3').setValue('1〜10です');
}
if(value === 11 || value === 12){
sheet.getRange('C3').setValue('11か12です');
}
}
GASのif文で条件分岐の複数処理、空白かどうかを調べるサンプルデータ
今回のサンプルデータはこちらになります。
【Copori】スプレッドシートのセルの値を条件分岐サンプル
条件分岐サンプルデータの使い方
【使用方法】
1、【Copori】スプレッドシートのセルの値を条件分岐サンプルを開いてコピーしてください
3、メニューから「拡張機能」⇨「Apps Script」を開きます
※複数アカウントでログインしているとエラーで開けないので注意してください
4、GASの実行をして確認してみてください
このサンプルコードでは、C6セルの値がif文で分岐され、setValueで実行結果に入力するようになっています。
※チェックボックスで自動実行や初期化をする場合は、一度権限取得を行う必要があります。
権限取得の方法はこちら
5、初期化する時は、C9のチェックボックスにチェックを入れてください
(実行完了すると、C3、C6が空欄になってC9のチェックが外れます)
条件分岐サンプルデータのGASコード詳細
このサンプルデータでは、C6に入力された値によって複数条件分岐をして、
C3に条件に応じた内容を入力するようになっています。
空セル=「空セルです」
空白(スペース)セル=「空白が入っています」
0=「0が入っています」
それ以外=「入力されています」
function dataif() {
//アクティブシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//記入欄を取得
var range = sheet.getRange('C6');
var value = sheet.getRange('C6').getValue();
//取得した記入欄のチェック
if(range.isBlank()){
sheet.getRange('C3').setValue('空セルです');
}else{
if(value === ' ' || value === ' '){
sheet.getRange('C3').setValue('空白が入っています');
}else{
sheet.getRange('C3').setValue('入力されています');
}
}
}
GASの複数条件分岐をシンプルにする
サンプルコードのようにif文で複数条件する場合は、
elseを使用して入れ子にしていくと複雑になってしまいます。
if(条件)
}else
処理
}else 〜〜
これをシンプルにできるのがswicthメソッドです。
swicthについての詳細はこちら
【GAS】switchのcaseで複数処理、GASで複数分岐まとめ【Google Apps Script】
ありがとうございました!
コメント