Quantcast
Viewing all articles
Browse latest Browse all 2085

【初心者向けGAS】条件分岐をするif文の使い方の超基本

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けGoogle Apps Scriptのシリーズとして、Botを作りながらGASプログラミングの基礎の基礎についてお伝えしています。

前回の記事はこちら。

初心者向けGoogle Apps Script超入門、GASプログラミングの基本を学んでいきます。今回は、for文を使った繰り返しの超基本。カウント変数、初期化式、条件式、増加式の意味と使い方です。

for文を使った繰り返し処理の基本についてお伝えしました。

さて、今回はもう一つの重要な制御構文についてです。

ということで、Google Apps Scriptで条件分岐をするif文の使い方の超基本、行ってみましょう!

前回のおさらいと今回のお題

題材としているスプレッドシートはこちらです。

Image may be NSFW.
Clik here to view.
スプレッドシートの名言リスト

これに対して、前回以下のようなスクリプトを作成しました。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  for(var i = 2; i <= lastRow; i++) {
    Logger.log(sheet.getRange(i, 1).getValue());
  }
}

実行すると以下のようなログ出力が得られます。

Image may be NSFW.
Clik here to view.
GASでスプレッドシートのリストを順番にログ出力

Botのアルゴリズム

ただ、作りたいのはBotなんですよね…。毎回の実行で、こんなに全部送ったら、大変です。

つまり、1回の実行で、1つの名言について、Botとして送りたいわけです。

それで、そのために以下のような方針でスクリプトを改善していきます。

  1. for文を使って上から順に走査していく
  2. 「印」がない名言があれば、送信して「印」をつける
  3. 全てに「印」がついているときは、全ての「印」を消去する

こんなアルゴリズムでBotを作っていきたいと思います。

「印」の付け方

それで、印の付け方なのですが、シートのD列を以下のようにしてみました。

Image may be NSFW.
Clik here to view.
スプレッドシートにif文に使うチェック用の列を追加

つまり、D列の「isSent」列は、基本的には「空文字」としておいて、一度Botとして送信した名言には「TRUE」と入力するようにするのです。

このようにすれば、実行のたびにfor文で2行目から走査して、D列が「空文字」の名言があったら、Botを送信すればよいということになりますよね。

if文の使い方

「D列の値が空文字であれば~する」というように、条件に応じて処理を分岐させたいときにはif文を使います。

書式はこちらです。

if(条件式) {
 // 条件式がtrueだったときの処理
}

んー、わかるような、わからないような…

条件式とは

条件式「成立している」または「成立していない」のどちらか一方の値をとる式です。

条件式は、以下のような比較演算子を使い、成立している場合はtrueという値を、そうでない場合はfalseという値をとります。

比較演算子 意味
=== 等しい
!== 等しくない
< 小さい
<= 以下
>= 以上
> 大きい

ですから、例えば「10 <= 100」はtrueになりますし、「5 === 10」はfalseになります。

文字列の判定と否定の論理演算子

さて、今回の場合ですが、for文で2行目から走査したとして、D列の値が「空文字でなかった」場合に、Botを送信したいということになります。

ですので、普通に書くのであれば

if(sheet.getRange(i, 4).getValue() === ''){ 
  Logger.log(sheet.getRange(i, 1).getValue());
}

などという条件式になります。

ですが、空文字つまり長さゼロの文字列は暗黙的にfalseというルールがありますので、これを活用すると以下のように書けます。

if(!sheet.getRange(i, 4).getValue()){ 
  Logger.log(sheet.getRange(i, 1).getValue());
}

「!」は条件式の結果を反転する論理演算子と呼ばれる記号です。「ではない」という意味ですね。

!条件式

なお、文字列で言えば、長さが1以上の文字列は暗黙的にtrueというルールもありますので、覚えておくと便利ですよ。

if文による条件分岐を使ったスクリプト

以上を踏まえて、以下のようなスクリプトを作成してみました。

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var lastRow = sheet.getLastRow();
  
  for(var i = 2; i <= lastRow; i++) {
    if(!sheet.getRange(i, 4).getValue()){ 
      Logger.log(sheet.getRange(i, 1).getValue());
    }
  }
}

D列を判定して、空文字であればA列の名言をログ出力するというものです。

結果はこちらです。

Image may be NSFW.
Clik here to view.
GASでif文による条件分岐を使ったスクリプトの結果

D列について「TRUE」とない行についての名言がログ出力されました。

まとめ

以上、Google Apps Scriptで条件分岐をするif文の使い方の超基本についてお伝えしました。

if文の使い方、条件式、また空文字は暗黙的にfalseとなるという点がポイントですね。

次回は、セルに値を入力する方法についてお伝えします。

どうぞお楽しみに!

連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するLogger.logの使い方
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
  8. 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
  9. 【初心者向けGAS】 for文を使ったスプレッドシートの繰り返しの超基本
  10. 【初心者向けGAS】条件分岐をするif文の使い方の超基本

Viewing all articles
Browse latest Browse all 2085

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>