Google Apps Scriptのデバッグ方法

Google Apps Scriptを用いてWebアプリを開発したときに、デバッグ方法に困ったので備忘録を兼ねて残しておきます。

Webアプリを作成しない場合

まずはWebアプリを開発しない場合から紹介します。ほとんどの場合は、このデバッグ方法を使えば問題ないかと思います。

Logger.logでのログ出力

以下のように、引数のデータをそのまま出力します。引数に変数を指定する事もできます。
log(format, values)という形式で、formatの中で%sというプレースホルダー(正式な値が入るまで一時的に場所を確保しておく措置のこと)を使うことができ、値は可変で渡すこともできます。

Logger.log('apple');
// 「apple」と表示されます

var fruit = 'apple';
Logger.log(fruit);
// 「apple」と表示されます 

Logger.log('I like "%s".', 'apple');
// 「I like "apple".」と表示されます

Logger.log('I like "%s" and "%s".', 'apple', 'red');
// 「I like "apple" and "red".」と表示されます

(参考ページ)
【GoogleAppsScript】ログ出力(デバッグ目的)

以下の手順で確認できます。

  1. スクリプトを実行します。
  2. GAS画面の左上の「表示」>「ログ」で、ログを見るためのビューが表示されます。
    (もしくは Ctrl + Enter でも表示できます)

以下のようにログが表示されます。

Browser.msgBoxでのログ出力

引数をメッセージボックスで表示させます。こちらも、テキストと変数の両方を引数に指定できます。

function myFunction() {
  Browser.msgBox("テスト");
}

(参考ページ)
GAS(google app script)でポップアップを表示させる方法

デバッグ目的であれば上記で十分かと思いますが、選択肢付きポップアップ表示(「はい」と「いいえ」が選択できる、など)など、メッセージボックス(ポップアップ表示)については、上記の参考ページに詳細が記載されていますので。

Webアプリを作成する場合

Webアプリを作成する場合は、Google Cloud Platformのログビューアを使ったほうがいいです(というか、使わないとまともに開発を進められません…)。
Logger.logではエラーが出力されていなくても、ログビューアではエラーが出ていることがあるからです。
ログビューアは以下のように表示されます。

開き方は、まずスクリプトエディタのツールバーの「表示」 -> 「Stackdriver Logging」を選択します。

すると、URLが表示されている窓に『ポップアップがブロックされました』と表示されます。これをクリックします。

すると、Google Cloud Platformへのリンクが表示されるのでクリックします。すると開けます。

Webアプリ開発のデバッグでは、Console.log関数も使われているようです。
(参考ページ)
Google Apps Script(GAS)のログ出力はLogger.logだけじゃないよ、console.logもあるよ

まとめ

Google Apps ScriptでWebアプリ開発を行うときは、Google Cloud Platformのログビューアを使いましょう。
そうしないと、まともにデバッグできません(エラーに関する情報が得られないため)。

コメント

  1. とも より:

    実行ボタンの横にあるデバッグボタンからでもデバッグできるように思うのですが推奨されないのでしょうか。なぜLoggerとメッセージボックスが良いのですか。

    • バヤシ バヤシ より:

      コメントありがとうございます。
      正直私もそこまで詳しくなく、デバッグボタンを使ったことがないのですが、今使用した感じだとデバッグボタンでは、構文の間違いしか検知できず、値がこちらが期待したものが正しく吐き出されるかはLogger.logなどで実際に値を吐き出させないとデバッグできないかと思います。
      いかがでしょうか?

      • とも より:

        ご返信ありがとうございます。
        私は今までLoggerデバッグしていましたが、正直しんどいです。GASのデバッグ機能の使いこなして楽にデバッグしたいと思っていたのですが、Loggerがデバッグ機能よりも良い点があるのなら歯がゆいですね。

        • バヤシ バヤシ より:

          場合によって使い分けるしかないかと思います…。
          将来的にはどんどんプログラミングも自動化されていくかもしれないので、そうなると楽になるかもしれませんね。。

タイトルとURLをコピーしました