Google Apps Script入門 | 第10回.条件で処理を変える(条件分岐,if) | Google Apps Script(GAS)の入門解説です



最終更新日:2016-10-10

第10回.条件で処理を変える(条件分岐,if)

セルの値等の条件により処理内容を変更する条件分岐です、

プログラムとは、処理手順であり、突き詰めれば、

条件分岐しながら繰り返し処理を行うものです。


以下の表で条件分岐を具体例を説明します。

やることは、

E列合否合計点が210以上なら"○"、以外は"×"
F列特待生合計が240以上で、3科目全て70以上なら"○"、以外は"×"
G列クラス合計点が250以上なら"A"、230以上なら"B"、210以上なら"C"




先に完成コードをお見せします。
新しい文は、ifとelseだけです。
ifは、もしも
elseは、その他
そのまま読んでみて、理解度を確認してみましょう。

完成コード

E列合否:合計点が210以上なら"○"、以外は"×"
function sample11_1() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var lastRow,total
  lastRow = getLastRow(sheet,1)
  for (var i=2; i<=lastRow; i++) {
    total = sheet.getRange(i, 4).getValue()
    if (total >= 210) {
      sheet.getRange(i, 5).setValue("○")
    }
    else {
      sheet.getRange(i, 5).setValue("×")
    }
  }
}
条件式を、
< 210
とすれば、○×が逆になります。


F列特待生:合計が240以上で、3科目全て70以上なら"○"、以外は"×"
function sample11_2() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var lastRow,total,jpn,eng,mat
  lastRow = getLastRow(sheet,1)
  for (var i=2; i<=lastRow; i++) {
    jpn = sheet.getRange(i, 1).getValue()
    eng = sheet.getRange(i, 2).getValue()
    mat = sheet.getRange(i, 3).getValue()
    total = sheet.getRange(i, 4).getValue()
    sheet.getRange(i, 6).setValue("")
    if (total >= 240) {
      if (jpn >= 70 && 
          eng >= 70 && 
          mat >= 70) {
        sheet.getRange(i, 6).setValue("○")
      }
    }
  }
}
sheet.getRange(i, 6).setValue("")
これで、先にF列を消去しています。
これが無い場合は、
二つのifに、それぞれelseを書き、そこで消去する必要が出てきます。


G列クラス:合計点が250以上なら"A"、230以上なら"B"、210以上なら"C"
function sample11_3() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var lastRow,total
  lastRow = getLastRow(sheet,1)
  for (var i=2; i<=lastRow; i++) {
    total = sheet.getRange(i, 4).getValue()
    if (total >= 250) {
      sheet.getRange(i, 7).setValue("A")
    } else if (total >= 230) {
      sheet.getRange(i, 7).setValue("B")
    } else if (total >= 210) {
      sheet.getRange(i, 7).setValue("C")
    } else {
      sheet.getRange(i, 7).setValue("")
    }
  }
}
最後のelseは、それまでの条件がいずれもfalseの場合になります。
つまり、ここでは、210未満の不合格なので空欄にしています。


結果


if...else文の説明

if (条件) {
 ステートメント1
}


条件を満たしているとき、つまり条件がtrueの時、ステートメント1を実行
ステートメントは、複数行書くこともできます。

if (条件) {
 ステートメント1
} else {
 ステートメント2
}


条件を満たしているとき、つまり条件がtrueの時、ステートメント1を実行
条件を満たしていないとき、つまり条件がfalseの時、ステートメント2を実行
ステートメントは、複数行書くこともできます、また、省略することもできます。


if (条件1) {
 ステートメント1
} else if (条件2) {
 ステートメント2
・・・
} else {
 ステートメント3
}


条件1を満たしているとき、つまり条件1がtrueの時、ステートメント1を実行
上記以外の時、
条件2を満たしているとき、つまり条件2がtrueの時、ステートメント2を実行
・・・同様に、条件を複数件設定できます。
上記以外の時、ステートメント3を実行
ステートメントは、複数行書くこともできます、また、省略することもできます。


比較演算子

演算子 説明 詳細
== 等しい 被演算子が等しい場合に true を返します。
!= 等しくない 被演算子が等しくない場合に true を返します。
=== 厳密に等しい 被演算子が等しく、かつ同じ型である場合に true を返します。
!== 厳密に等しくない 被演算子が等しくなく、かつ/または同じ型でない場合に true を返します。
> より大きい 左の被演算子が右の被演算子よりも大きい場合に true を返します。
>= 以上 左の被演算子が右の被演算子以上である場合に true を返します。
< より小さい? 左の被演算子が右の被演算子よりも小さい場合に true を返します。
<= 以下 左の被演算子が右の被演算子以下である場合に true を返します。

===と!==については、当面は覚える必要はありません。
※VBA経験者の方へ
 ==と!=がVBAとは違いますが、プログラミング言語としては、こちらが一般的です。


論理演算子

演算子 使用法 説明
&& expr1 && expr2 論理積 (AND)
expr1をfalseと見ることができる場合は、expr1を返します。
そうでない場合はexpr2を返します。
両被演算子がtrueであれば&&はtrueを返し、そうでなければfalseを返します。
|| expr1 || expr2 論理和 (OR)
expr1をtrueと見ることができる場合は、expr1を返します。
そうでない場合はexpr2を返します。
どちらかの被演算子がtrueであれば||はtrueを返し、両方ともfalseであればfalseを返します。
! !expr 論理否定 (NOT)
単一の被演算子をtrueと見ることができる場合は、falseを返します。
そうでない場合はtrueを返します。

ビット演算子
演算子 使用法 説明
& a & b ビット論理積(AND)
被演算子の対応するビットがともに 1 である各ビットについて 1 を返します。
| a | b ビット論理和(OR)
被演算子の対応するビットがともに 0 である各ビットについて 0 を返します。

こちらを使う必要は、当面はありません。
まずは、論理演算子だけ言覚えておきましょう。


プログラミング言語は数あっても、ifはifです。
ifこそ、プログラミングの基本中の基本です。
IF文の整理と論理的思考
こちらも、是非お読みください。




同じテーマ「Google Apps Script入門」の記事

第11回.条件で処理を変える(条件分岐,switch)
第12回.表範囲をまとめて消去する
第13回.セルに書式を設定する
第14回.複数のシートを扱う
第15回.複数のスプレッドシートを扱う
第16回.Google Apps Scriptの文法
第17回.JavaScript リファレンス

新着記事 ・・・新着記事一覧を見る

メモの挿入・削除と改行文字|Google Apps Script入門(12月6日)
リンクの挿入・編集・削除|Google Apps Script入門(12月6日)
セルに数式を入れる|Google Apps Script入門(12月1日)
セルのコピー&各種ペースト|Google Apps Script入門(11月22日)
Twitter Bot 作成|Google Apps Script応用(11月6日)
Excel流の最終行の取得|Google Apps Script応用(11月6日)
方眼紙Excelが楽に入力できるVBA|ExcelマクロVBAサンプル集(11月5日)
「ポケモンを確実に見つける方法」をExcelで数学してみた|エクセル雑感(11月4日)
スプレッドシート(ブック)の作成・名前変更|Google Apps Script入門(11月4日)
シートの挿入・削除・名前変更|Google Apps Script入門(11月3日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.CSVの読み込み方法|ExcelマクロVBAサンプル集
8.変数とデータ型(Dim)|ExcelマクロVBA入門
9.セル・行・列の削除・挿入(Delete,Insert)|ExcelマクロVBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 条件で処理を変える(条件分岐,if)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。



    ↑ PAGE TOP