広告

Google apps scriptでif else|条件分岐を使ってみよう

2018年2月8日

Google apps script × if elseifのコード内容

if elseifをGoogle apps scriptで実装した内容を、STEPに分けて紹介します。

STEP1. 処理する範囲とシートを変数定義

まず処理するシートを決めて変数へ格納します。今回はシート1を設定。

function ifelse1() {
//変数
var ss,sht,rng,val,color
ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートapp呼び出し
sht = ss.getSheetByName('シート1');//シート1を設定

次に条件範囲を変数rngに格納します↓

最終行を変数valに格納↓

背景色を変数colorに格納します↓

ここまでをGASで記載すると以下のとおり↓

rng = sht.getRange("C4:C18").getValues();//条件の範囲
val= sht.getLastRow();//最終行
color = "#ffff93"//背景色

【解説】実装した変数の意味

var変数 (var ss,sht,rng,val,color) の各内訳

  • ss・・スプレッドシートAppを呼び出し
  • sht・・シート1を呼び出し
  • rng・・条件式の範囲
  • val・・最終行
  • color・・背景色(今回は黄色)
POINT!
条件式の範囲は指定せずにgetlastRowでもOK。可変するデータの時にオススメです。
例)
rng = sht.getRange("C4:C18").getValues();

rng = sht.getlastRow();
参照:getlastRow()

STEP2. for loop処理を設定する

for loop文を使って繰返し処理を設定します。

GAS実装はこちら↓

for (var i=0; i <=val-4; i++){
/*ここにif文が入る*/
}

【解説】for文のGAS内訳

for(初期化式;継続条件式;増減式)
{
条件式がtrueの時に実行する繰返し処理
}

コード➜ for(var i=0; i<=val-4; i++)

  • 初期化式が0(i=0)
  • 継続条件式が最終行-4の値まで(i<=val-4)
  • 増減式はプラス(i++)
POINT!
i<=val-4 の意味は※開始4行目から18回(val:最終行分)繰り返す処理を、C列の最終行に合わせるために
val-4 ➜ 18-4(行目)
と設定しています。
※開始4行目はif文で設定しています。

STEP3. if elseifを設定する

if elseifで条件分岐「〜だったら...」を設定します。

GASで記述↓

if(rng[i]=="赤テキスト"){
sht.getRange(i+4,4).setValue('赤文字').setHorizontalAlignment("center").setFontColor("red");
}else if(rng[i]=="赤テキスト黄色塗り"){
sht.getRange(i+4,4).setValue('赤&黄色').setHorizontalAlignment("center").setFontColor("red").setBackground(color);
}else{
sht.getRange(i+4,4).setValue('青文字').setHorizontalAlignment("center").setFontColor("blue");
}

【解説】if elseif文の内訳

If (条件式1) {
処理A
}elseif (条件式2){
処理B
}else{
処理C
}
  • 条件式1が"赤テキスト”なら
    ( rng[i]=="赤テキスト" )
  • 処理Aはテキストを"赤文字”・フォント色を"赤"に
    ( sht.getRange(i+4,4).setValue('赤文字'). ・・・)
  • 条件式2が"赤テキスト黄色塗り"なら
    ( rng[i]=="赤テキスト黄色塗り" )
  • 処理Bはテキストを"赤&黄色"・背景を黄色に
    ( sht.getRange(i+4,4).setValue('赤&黄色'). ・・・)
  • どれでもなかったら処理C
    ( sht.getRange(i+4,4).setValue('青文字'). ・・・)

あひる
あひる
このソースコード分かりづらい!

OYAKUN
OYAKUN
はい...ごめんなさい。

POINT!
割愛したコードの内訳を記載しておきます。

  • テキストを中央へ
    setHorizontalAlignment("center")
  • フォントカラーを赤へ
    setFontColor("red")
  • セルの背景色を変える
    setBackground(color);

背景色の「color」は変数宣言varで黄色(color = "#ffff93"//背景色)に設定しています。

参考:Class Range

Google apps script if else文の結果

全部を繋ぐとこんな感じですね↓

function ifelse1() {
var ss,sht,rng,val,lastr,color
  ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
rng = sht.getRange("C4:C18").getValues();
lastr= sht.getLastRow();
color = "#ffff93"
val = lastr
Logger.log(val);
for (var i=0; i <=val-4; i++){
if(rng[i]=="赤テキスト"){
sht.getRange(i+4,4).setValue('赤文字').setHorizontalAlignment("center").setFontColor("red");
}else if(rng[i]=="赤テキスト黄色塗り"){
sht.getRange(i+4,4).setValue('赤&黄色').setHorizontalAlignment("center").setFontColor("red").setBackground(color);
}else{
sht.getRange(i+4,4).setValue('青文字').setHorizontalAlignment("center").setFontColor("blue");
  }
}
}
function リセット(){
var ss,sht,val
ss= SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
val = sht.getRange("D4:D18").clear();
}

あひる
あひる
A列で「その他」が記載されている同行のB列「青文字」が、全部青になった!

ううこ
ううこ
そういうプログラムだからね

関連記事: Google apps script でfilterをかける方法|Sheet APIと連携したら上手くいった

まとめ

if elseとif elseifを使って分岐は上手く出来ましたか?

for loopとif文を組み合わせて使うことで、連続した分岐処理を行えて非常に便利です。

まとめると

  1. シート範囲と最終行を変数へ格納
  2. for文で処理範囲・回数を設定
  3. if文で条件式を設定して分岐させる

こんな感じです。

if elseifで人の判断を介さず条件分岐できることこそ、プログラミングの醍醐味の1つではないでしょうか?

OYAKUN
OYAKUN
人生もある程度if elseifで自動選択出来たら楽チンなんですが...苦笑

関連記事: Google apps scriptでfor loop|繰返し処理を3ステップで
オススメ スプレッドシートの印刷をスマホからコンビニで!実際にやってみたよ!
オススメ スプレッドシート行の色を交互に!たった3クリックで設定出来るよ!