繰り返し処理中に空白がある時の対処方法
繰返し処理する値が途中空白の時、処理を中断せずに空白を返す方法も簡単にご紹介しておきます。
for繰返しにifを挿入して条件分岐するコード
上GIFで使ったコードです↓
function sample2(){
var sheet,sht,loop,val,lastRow
sheet = SpreadsheetApp.getActiveSpreadsheet();
sht = sheet.getSheetByName('シート1');
lastRow = sht.getLastRow();
val = sht.getRange("B2:B11").getValues();
for(var i=0 ; i <= lastRow-2 ; i++)
{
if(val[i] =="")
{
sht.getRange(i+2,3).setValue("");
}else{
sht.getRange(i+2,3).setValue("◯");
}
}
}
今回使ったif構文についてサラッと説明しておきます。
If(条件式){
処理A
} else {
処理B
}
条件式
trueかfalseの値を取得するもの。
処理A
trueの場合に実行される処理。
処理B
falseの場合に実行される処理。
前ページの「最終行を取得する」までは全く同じコードなので、追記した部分をちょびっとだけ解説します。
if条件式の範囲を変数へ格納
val = sht.getRange("B2:B11").getValues();
にてB2~B11の範囲値を変数valへ格納します。
for文にif文を挿入して条件分岐させる
先ほど範囲を格納した変数
val
が空白の時は空白、そうでなかったら◯を入れます。
{
if(val[i] =="")
{
sht.getRange(i+2,3).setValue("");
}else{
sht.getRange(i+2,3).setValue("◯");
}
}
for文の初期化式が
i=2
のままでは、true・falseの処理結果がずれてしまうので下記変更しました。
- for文の初期化式の部分を
var i = 0
に変更。 - 継続条件式の部分を
i <= lastRow-2
に変更。 - 変わりに処理A・Bの
getRange(i+2,3)
でセルを取得。
for loopで繰返し処理を行えばほぼ確実に条件分岐も伴うな〜と思い、本記事にまとめてみました。
ベンリ♪スプレッドシートとカレンダーを連携してイベントを一括登録する方法
まとめ
for loopで繰り返し処理、ifで条件分岐は上手く出来ましたか?
まとめると
- シート範囲を変数に格納
- 最終行を取得
- for文で繰り返し処理
- if文で条件分岐
という感じですね。
繰返しと条件分岐が使えると、データの取得や加工なんかの自動化ってすごく便利だな〜と感じます。
for文の繰返し処理はご紹介出来てないだけで、他にも沢山あるので随時追記していければなと(*^^*)
関連記事:Google apps scriptでsortする方法|昇順・降順・列ごとに並び替え
関連記事:Google apps script getrangeでセルの値を取得しよう!
関連記事: スプレッドシートの印刷をスマホからコンビニで!実際にやってみたよ!
関連記事: スプレッドシートとカレンダーを連携してイベントを一括登録する方法