2014年3月26日水曜日

【Google Apps Script】3. デバッグ環境

Google Apps Scriptは取り組んでいけばいくほど奥深くて面白いのですが、コードを書いて、一発で完成という域にはなかなか達するものではないかと思います。といいますか、人間ですので・・必ずミスは発生すると思ったほうが無難です。

そのために、Google Apps Scriptのエディタにはデバッグするための機能がいくつか標準でついています。

例えば、Googleカレンダーの今日の予定数を教えてくれるプログラムを書いたとします。




サンプルコード(// の行はコメントなので実行されません)
-----------------------------
function myEventstoday() {
    var today = new Date();
                 // 現在日時を取得します
    var events = CalendarApp.getDefaultCalendar().getEventsForDay(today);
                 // カレンダーに登録されている今日のイベントを取得します
 Logger.log('本日のイベントの数: ' + events.length);
                 // イベントの数をログに出力します
}
-----------------------------

こちらをコピペしてもらい、実行すれば恐らく問題なく動作します。あ、その前にログって何ということがあると思います。開発者の方には当たり前のものなのですが、意外とそのへんの説明が何を調べてもなにかと不親切でw・・。

Google Apps Scriptのドキュメントを見ると、クラスloggerの概要説明は"This class allows the developer to write out text to the debugging logs."とありますので、「この(logger)クラスを使うことで、開発者はテキストをデバッグ用ログにテキストを出力することができます」ということになるかと思います。

そもそもログの目的はいろいろありますが、Google Apps Scriptの中での主な目的は、
  • プログラム内部の動きを調べる
  • プログラムなどの処理や動作の過程を記録する
  • スプレッドシート画面などを使って伝えることができないメッセージを伝達する
あたりかなぁと思います。


で、スクリプトを実行した後で、メニューの「表示」→「ログ」を選んでいただくと





こんな感じでログに出力されたかがわかります。これはGoogleスプレッドシートを起点にしていますが、そもそもスクリプトだけが独立して存在するということもありえます。



Google Appsの新規作成メニューの中にスクリプトってありますよね。こういう場合は特に、途中の動作を確認する上でもログ機能は必要になりますね。











同じような機能で実行トランスクリプトがあります。メニューの「表示」→「実行トランスクリプト」を選んでください。ログは最終的なテキストの出力結果のみですが、実行トランスクリプトは、スクリプト実行時の各メソッドの 実現の様子を記録したものになります。

仮にスクリプトにバグがあった場合、まずは画面上部に赤色で表示が出ますが、「ReferenceError: 「s」が定義されていません。(行 5、ファイル「コード」)」のように、コードのどこに問題があるのかを指定してくれます。エディタに戻って該当する行を直せばOKです。
あとは実行トランスクリプトの中でも同様に問題箇所を提示してくれます。

最後にデバッグ機能があります。虫マークのボタンをクリックするとデバッグモードで実行され、問題箇所がハイライトされます。あと、下の部分に各定義や取り込んだデータの構造(例えばXMLデータなどの)がわかるようになっているので、デバッグだけではなく、コード作成中にも重宝する機能です。ただ、コードに問題がない場合はデバッグ画面は起動しないので、どうしても見たい際はわかりやすい余計な文字などを挿入してデバッグ画面が出るようにしています。

ということでブラウザだけでこういう環境が準備されているので、取りかかりやすいなと思う次第です。

0 件のコメント:

コメントを投稿