GASで論理演算子「||」を使って条件分岐の省略をしつつ変数に値を代入する方法


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

GASでGoogleカレンダーの予定をまとめて登録するツールを作成しています。

前回の記事はこちら。

Google Apps Scriptで関数の引数を省略した場合の挙動とデフォルト値の設定方法
GASでGoogleカレンダーの複数の予定をまとめて登録するツールを作成しています。今回は、Google Apps Scriptで関数の引数を省略した場合の挙動とデフォルト値の設定方法についてです。

日付関連の処理を関数化したのですが、その引数を省略した際の挙動とデフォルト値の設定について解説をしました。

それで、その引数が渡されているかの判定をしてデフォルト値を設定する処理にif文を使っていたのですが、そのif文を省略してオシャレに書いちゃおうと思います。

ということで、今回は、Google Apps Scriptで論理演算子「||」を使って条件分岐の省略をつつ変数に値を代入する方法です。

では、行ってみましょう!

前回のおさらい

前回のスクリプトはこちらです。

関数createEventsから呼び出される関数addTimeですが、引数が2つの場合と3つの場合があります。

引数が2つの場合は、関数addTimeでは仮引数の値がundefindになってしまいます。

ですから、undefindかどうかを判定して、もしそうなら以降の処理に支障をきたさないように、デフォルト値を設定するというのが28~30行目の処理になります。

ただ、この部分。

if文を省略してオシャレに書くことができるんです。

論理演算子「||」を使って仮引数の判定をするスクリプト

結論から言うと、関数addTimeは以下のように記述することができます。

if文の代わりに、論理演算子を使ったコチラのステートメントが挿入されています。

…論理演算子「||」…?

こんな使い方、あんまり見たことないですよね。私もそうでした。

論理演算子の本来の意味

本来、論理演算子「||」は、if文などの条件式内で「または」という意味で使っていました。

しかし、それが真偽値ではないデータに用いたらどうなるのか…?

それを明らかにするために、HTMLやJavaScriptなどのウェブ標準についてまとめられているMDNで、各論理演算子の定義を確認してみましょう。

以下のように記載されています。

演算子 使用法 説明
論理AND (&&) expr1 && expr2 expr1 を false と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。
論理OR (||) expr1 || expr2 expr1 を true と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。
論理 NOT (!) !expr 単一の演算対象が true と見ることができる場合は、false を返します。そうでない場合は、true を返します。

引用: 論理演算子 – JavaScript | MDN

「論理OR(||)」の説明を見てくださいね。

JavaScriptの場合、全てのデータ型について真偽値への暗黙の型変換がなされます。

ですから、今回のスクリプトの例ですと変数howLongがtrueとみなされれば、howLongにはその値がそのまま採用されますし、falseとみなされればnew Date(0,0,0,0,0,0)が適用されるということになります。

論理演算子「||」を使った変数への代入

つまり、以下のように書いた場合は、変数がtureとみなされれば変数の値がそのまま、変数がfalseとみなされれば値が変数に代入されるということになります。

変数 = 変数 || 値

なお、変数がfalseとみなされるケースにはundefindを含めて以下のような値になります。

  • 0
  • NaN
  • 空文字
  • false
  • null
  • undefind

したがって、変数に何かおそらく有効な値が入っているかどうかを判定して、そうでない場合はデフォルト値を設定したい、そのようなときには論理演算子「||」を使うチャンスということになります。

まとめ

以上、Google Apps Scriptで論理演算子「||」を使って条件分岐の省略をつつ変数に値を代入する方法をお伝えしました。

論理演算子…奥が深いですね!

その意味をちゃんと理解しておくと、コードをオシャレに書くことができるというわけです。

ちなみに、本記事は以下の記事をたいへん参考にさせていただきまいた。ありがとうございます!

JavaScriptの「&&」「||」について盛大に勘違いをしていた件 - Qiita
# 論理演算子「&&」「||」について JavaScriptの基本である論理演算子の `&&` `||` について、 根本的に勘違いをしていたことに最近気付いたので自戒の意味を込めてここに記します。 ## 論理演算子の使い道 #...

これで、イベントを追加する一連のシリーズは終了です。

また、別の便利なツールを紹介していきますね。

どうぞお楽しみに!

連載目次:GASでカレンダーイベントをまとめて追加するツールを作る

Googleカレンダー便利ですよね!ただ、複数のイベントをいくつも追加しなければいけないとき…少し面倒です。そんなときのための便利ツールとして、スプレッドシートの入力情報をもとにカレンダーイベントをまとめて追加するツールを作成していきます。
  1. GASでデフォルトのGoogleカレンダーにイベントを追加する簡単なスクリプト
  2. GASでスプレッドシートの入力からGoogleカレンダーに複数のイベントを追加
  3. Google Apps ScriptでDateオブジェクトの複製や時刻のセットで注意すること
  4. Google Apps Scriptで日付関連の処理を関数化する例とその際のポイント
  5. Google Apps Scriptで関数の引数を省略した場合の挙動とデフォルト値の設定方法
  6. GASで論理演算子「||」を使って条件分岐の省略をしつつ変数に値を代入する方法

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント