広告

Google apps scriptでfor loop|繰返し処理を3ステップで

2018年1月25日

繰り返し処理中に空白がある時の対処方法

繰返し処理する値が途中空白の時、処理を中断せずに空白を返す方法も簡単にご紹介しておきます。

あひる
あひる
そうそう、参照する値が空白の時は空白を返したいんだよね
ううこ
ううこ
for文に条件分岐を挿入してあげると可能だよ

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の処理結果がずれてしまうので下記変更しました。

OYAKUN
OYAKUN
完全に自分のメモ...
  • for文の初期化式の部分を var i = 0 に変更。
  • 継続条件式の部分を i <= lastRow-2 に変更。
  • 変わりに処理A・Bの getRange(i+2,3) でセルを取得。

for loopで繰返し処理を行えばほぼ確実に条件分岐も伴うな〜と思い、本記事にまとめてみました。

あひる
あひる
自動で判断してくれるのはありがたいネ!

ベンリ♪スプレッドシートとカレンダーを連携してイベントを一括登録する方法

まとめ

for loopで繰り返し処理、ifで条件分岐は上手く出来ましたか?

まとめると

  • シート範囲を変数に格納
  • 最終行を取得
  • for文で繰り返し処理
  • if文で条件分岐

という感じですね。

繰返しと条件分岐が使えると、データの取得や加工なんかの自動化ってすごく便利だな〜と感じます。

for文の繰返し処理はご紹介出来てないだけで、他にも沢山あるので随時追記していければなと(*^^*)

OYAKUN
OYAKUN
ifの条件分岐についてはもう少し深く理解が必要なので、別記事でご紹介しますね。

関連記事:Google apps scriptでsortする方法|昇順・降順・列ごとに並び替え
関連記事:Google apps script getrangeでセルの値を取得しよう!
関連記事: スプレッドシートの印刷をスマホからコンビニで!実際にやってみたよ!
関連記事: スプレッドシートとカレンダーを連携してイベントを一括登録する方法