なぜ繰り返しとIF文なのか?
GASの条件分岐式
前回、GASの機能と、繰り返し処理のやり方について解説しました。
今回IF文などを使った、条件分岐について解説していきます。
GASでは、IF分以外にも、Swith Case文など、役割の異なる条件分岐が用意されています。
基礎的な処理は組み合わせ
なぜGASの解説の初期で、IF文をやるのかというと、前回の繰り返し処理と今回の条件分岐で、基礎的な処理はほとんどできてしまうといっても過言ではないからです。
というのも、結局表計算ソフトを使ってやることと言えば、上から順番に記載されているデータを見て、特定の条件に合致したら計算をする、といった処理が大半だからです。
もちろん、GASでは、スプレッドシート以外の処理もできますし、「時間が来たらメールを自動で送る」といったこともできます。なので、これだけというわけではないですが、GAS×スプレッドシートという組み合わせで多くの人がやりたいと考えていることは、ほぼこの二つの処理の組み合わせでできてしまいます。
条件分岐式
一番基本的なIF文
このような前提を踏まえて、条件分岐の一番基礎的な処理であるIF文について解説します。
IF文の構文は、次の通りです。
if(条件式){
//条件式がTrueときに処理を実行
}
前回は、A2からA5までの間に、繰り返し処理で「あ」と入れましたが、例えば奇数の場合にだけ「あ」と入れようとすると、次のようになります。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for(let i = 2; i <= 5; i++) {
if(i % 2 == 1){
spreadsheet.getRange('A' + i).setValue('あ');
}
}
}
ここで書かれている演算子「%」は、余りの計算です。ほかの四則演算は通常通りですが、余りが「%」というのが、少し特徴的です。
演算子 | 処理 |
+ | 足す |
– | 引く |
* | 掛ける |
/ | 割る |
% | あまりの計算 |
そうでない場合のelse・else if
ここで、列の番号が偶数の場合には「い」と入れたいとします。
この時、「奇数の場合は「あ」、偶数の場合は「い」」と、それぞれ表記するのも一つの方法です。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for(let i = 2; i <= 5; i++) {
if(i % 2 == 1){
spreadsheet.getRange('A' + i).setValue('あ');
}
if(i % 2 == 0){
spreadsheet.getRange('A' + i).setValue('い');
}
}
}
ただ、偶数という数字は、「奇数ではない」という表現もできます。
したがって、「奇数の場合は「あ」、そうじゃない場合は「い」」と、表記することもできます。ここで使うのが「else」です。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for(let i = 2; i <= 5; i++) {
if(i % 2 == 1){
spreadsheet.getRange('A' + i).setValue('あ');
}
else{
spreadsheet.getRange('A' + i).setValue('い');
}
}
}
また、3で割ったときの余りに応じて処理をしたいようなケースもあると思います。そういう場合は、「そうじゃない場合で且つ特定の条件式に該当する場合」に処理をする、else ifを使うときれいに表現できます。
言葉ではわかりにくいので、そのまま例で記載すると、次の通りです。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for(let i = 2; i <= 5; i++) {
if(i % 3 == 2){
spreadsheet.getRange('A' + i).setValue('あ');
}
else if(i % 3 == 1){
spreadsheet.getRange('A' + i).setValue('い');
}
else{
spreadsheet.getRange('A' + i).setValue('う');
}
}
}
switch文
上記のように、IF文だと、毎回条件式を書く必要があります。
これに対して、Switch Case文を使うと、Excelの関数のSWITCHと同じように、少し省略して記載することもできます。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for(let i = 2; i <= 5; i++) {
switch(i % 3){
case 2:spreadsheet.getRange('A' + i).setValue('あ');
break;
case 1:spreadsheet.getRange('A' + i).setValue('い');
break;
case 0:spreadsheet.getRange('A' + i).setValue('う');
break;
}
}
}
Switch Case文の場合、breakが必要になるので注意が必要です。
コメント