みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASの新IDEで「詳解! Google Apps Script完全入門 [第2版]」を読み進める際のいくつかの変更点が出てきましたので連載形式でまとめています。
前回の記事はこちら。
「3章 基本構文」「4章 制御構文」についてお伝えしました。
今回は、「5章 関数」「6章 クラスとオブジェクト」についてお伝えします。
では、行ってみましょう!
5-1 関数とは
本書の「5章 関数」のパートは新IDEの影響はあまり大きくありません。
いくつかの気になったポイントをお伝えします。
P148: デフォルト引数と残余引数
サンプル5-1-5は、引数と仮引数の数が合わなかった場合にどうなるかを検証するものです。
新IDEでも本書に記述しているとおりの動作をしますが、引数が仮引数よりも多い場合は、以下のように、修正プログラムの対象となり、すぐにキャッチできます。
P153: ドキュメンテーションコメント
ドキュメンテーションコメントは、新IDE導入によって、より効果的に使えるようになりました。
まず、本書のサンプル5-1-10のとおりにやると、以下のように、引数の概要の箇所が修正プログラム対象となってしまいました。
おそらくもっと厳密な書き方をしないといけない模様…
定義プレビューのホバーを表示する
ちなみに、ここで試しに関数名「includeTax」にカーソルがある状態で F1 のコマンドパレットから「定義」などと検索して「定義プレビューのホバーを表示する」を選択してみましょう。
すると、以下のように、関数の定義情報を見ることができます。
引数priceは「any」となっていて、タイプが認識されていないというわけですね。引数taxRateはデフォルト引数なので、numberと認識されています。
ドキュメンテーションコメントの@paramタグ
それで、ドキュメンテーションコメントの@paramタグを以下のように変更します。
/**
* 税込み価格を返す関数
*
* @param {Number} price - 価格
* @param {Number} taxRate - 税率(既定値は0.1)
* @return {Number} 税込価格
*/
function includeTax(price, taxRate = 0.1) {
return price * (1 + taxRate);
}
@paramタグを「{データ型} 仮引数名 – 概要」 という表記に変えるわけです。
すると、修正プログラムの対象から外れ、定義のホバーは以下表示になりました。
仮引数のpriceのデータ型がnumberであると認識されましたね。
これは、後ほど登場するスプレッドシートのカスタム関数にも有効ですので覚えておきましょう。
5-2 関数リテラル
P157: アロー関数
V8ランタイムから使えるようになったアロー関数は、コールバック関数などをスマートに記述する優れた構文です。
しかし、旧IDEでは、以下のように Shift + Tab によるオートフォーマッティグでうまく整えられないという悩みがありました。
それが、新IDEでは、以下のようにばっちりフォーマットできるようになりました。
ただし、ショートカットキーは Shift + Alt + F に変わってますのでご注意ください。なお、右クリックメニューからも使用することができます。
6-2 クラスとインスタンス化
クラスについても構文的には、何も変わることはありません。
UIでの確認方法について変更がありますので、その点を紹介していきます。
P177: クラス定義とnew演算子によるインスタンス化
サンプル6-2-2は最も簡単なクラスを作る例で、class構文を使います。
旧IDEでは以下のように、class構文には何のハイライトもつかないものでした。
それが、新IDEでは以下のようにカラフルに!
class文にもシンタックスハイライトつくようになりました。良いです!
6-3 メソッドとプロトタイプ
P186: インスタンスメソッドの変更
サンプル6-3-2は、クラスPersonから生成したインスタンスpについて、そのメソッドを上書きしてみようというものです。
その際に、ログ出力とともに、デバッグウィンドウのようすを図6-3-2で解説していたのですが、その表示は以下のように変更されています。
まず、ブレークポイントですが、新IDEではコメント位置に置いたとしても、実行時に勝手に移動します。この例では、関数の最後の閉じカッコの行に移動します。
次に、デバッガでの表示ですが、以下を発見することができます。
- クラスPerson>prototypeの配下に、もともと定義されていたgreetメソッド、isAdultメソッド
- インスタンスpの配下に、上書きされたgreetメソッド
ただ、新IDEのデバッガでは、それぞれのgreetメソッドの中身は確認できませんので、もし確認したければ、後述のLogger.logでログ出力するなどをする必要があります。
6-4 静的メンバー
プロトタイプメソッドの変更
サンプル6-4-2は、クラスPersonが持つプロトタイプメソッド自体を上書きしてしまおうというものです。
その実行結果を図6-3-3で示していましたが、新IDEでは以下のようになります。
ご覧のとおり、新IDEのデバッガではプロトタイプメソッドgreetの内容までは確認できません。
その内容を確認したい場合は、greetメソッドの内容をログ出力します。
以下コードを、サンプル6-4-2に挿入します。
console.log(Person.prototype.greet);
Logger.log(Person.prototype.greet);
実行すると、以下のようなログ出力が得られます。
ご覧いただくとわかるとおり、console.logだとその出力は [Function] とだけ表示されます。
一方で、Logger.logでは関数の内容がすべて表示されています。
このようなケースでは、Logger.logを使う必要性が出てきたりしますね。
まとめ
以上、新IDEで「GoogleAppsScript完全入門第2版【5章 関数】【6章 クラスとオブジェクト】」を読むときの変更点をお伝えしました。
次回は、「7章 JavaScriptの組み込みオブジェクト」に進んでいきます。
どうぞお楽しみに!
連載目次:新IDEでGAS本第2版を読み進めるときの注意点
Google Apps Scriptの新しい開発環境(通称「新IDE」)が、2020/12/7から順次提供開始となりました。 本書は、アップデート前の通称「旧IDE」を前提として書いておりますので、新IDEを使っている場合は、いくつか変更された点があります。以下連載形式でまとめていきます。ぜひご確認くだいませ!- 新IDEで「GoogleAppsScript完全入門第2版【2-1 はじめてのGAS】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【2-2 プロジェクトとスクリプト】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【2-3 スクリプトエディタの編集機能(前半)】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【2-3 スクリプトエディタの編集機能(後半)】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【2-4 ログとデバッグ】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【2-5 権限と許可】【2-6 ヘルプの活用】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【3章 基本構文】【4章 制御構文】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【5章 関数】【6章 クラスとオブジェクト】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【7章 JavaScriptの組み込みオブジェクト】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【8章 スプレッドシート】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【16章 Baseサービス】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【20章 プロパティサービス】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【21章 イベントとトリガー】」を読むときの変更点
- 新IDEで「GoogleAppsScript完全入門第2版【23章 ライブラリ】」を読むときの変更点