【GAS】スプレッドシートif文セルの値の複数処理、空白かどうかisBlank()【Google Apps Script】

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

スプレッドシートの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】

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

スポンサーリンク

コメント

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