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・・背景色(今回は黄色)
条件式の範囲は指定せずにgetlastRowでもOK。可変するデータの時にオススメです。
例)
↓
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++)
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('青文字').
・・・)
割愛したコードの内訳を記載しておきます。
- テキストを中央へ
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();
}
関連記事: Google apps script でfilterをかける方法|Sheet APIと連携したら上手くいった
まとめ
if elseとif elseifを使って分岐は上手く出来ましたか?
for loopとif文を組み合わせて使うことで、連続した分岐処理を行えて非常に便利です。
まとめると
- シート範囲と最終行を変数へ格納
- for文で処理範囲・回数を設定
- if文で条件式を設定して分岐させる
こんな感じです。
if elseifで人の判断を介さず条件分岐できることこそ、プログラミングの醍醐味の1つではないでしょうか?
関連記事: Google apps scriptでfor loop|繰返し処理を3ステップで
オススメ スプレッドシートの印刷をスマホからコンビニで!実際にやってみたよ!
オススメ スプレッドシート行の色を交互に!たった3クリックで設定出来るよ!