GAS入門講座 第3回|Logger.logで処理の途中経過を確認しよう

GAS入門講座第3回 Logger.logで処理の途中経過を確認するアイキャッチ画像

第2回では、Apps Scriptエディタの基本画面、保存、実行、実行ログの見方を確認しました。GASを学び始めたばかりの頃は、コードを書くことだけでなく、動かした結果をどこで確認するかに慣れることが大切です。

第3回では、Logger.log を使って、処理の途中経過を実行ログに表示する方法を整理します。コードがどこまで動いたのか、変数の中にどんな値が入っているのかを見えるようにすると、GASの学習がかなり進めやすくなります。

第3回のゴール

今回のゴールは、Logger.logを使って、GASの処理の途中経過を自分で確認できるようになることです。

  • Logger.log の基本的な使い方がわかる
  • 処理の開始・途中・完了をログで確認できる
  • 変数の中身をログに出して確認できる
  • 動かないときに、どこで止まっているかを探しやすくなる

Logger.logとは

Logger.logは、GASの実行ログにメッセージを出すための命令です。画面に何かを表示するためではなく、開発中に処理の流れを確認するためのメモとして使います。

Googleの公式ドキュメントでも、Loggerクラスは実行ログやGoogle Cloud Loggingへログを書き込むための機能として説明されています。初心者のうちは、まず「コードの動きを確認するためのメモを出すもの」と考えると十分です。

今回使うサンプルコード

今回は、スプレッドシートのA1セルに文字を書き込みながら、その途中経過をLogger.logで確認します。

function logPractice() {
  Logger.log("処理を開始しました");

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  Logger.log("シートを取得しました");

  const message = "ログの練習です";
  Logger.log("messageの中身: " + message);

  sheet.getRange("A1").setValue(message);
  Logger.log("A1セルに書き込みました");

  Logger.log("処理が完了しました");
}

このコードを実行すると、A1セルに「ログの練習です」と書き込まれます。同時に、Apps Scriptエディタの実行ログには、処理の開始から完了までのメッセージが順番に表示されます。

実行手順

  1. Googleスプレッドシートを開きます。
  2. メニューから「拡張機能」→「Apps Script」を開きます。
  3. エディタにサンプルコードを貼り付けます。
  4. 保存します。
  5. 関数名で logPractice を選びます。
  6. 実行ボタンを押します。
  7. スプレッドシートのA1セルと、Apps Scriptエディタの実行ログを確認します。

初回実行時は、権限確認の画面が出ることがあります。練習用のスプレッドシートであることを確認してから進めましょう。

Apps Scriptエディタで実行ボタンと実行ログを確認する画面
Apps Scriptエディタ上部の実行ボタンと実行ログの位置を確認します。

ログを見ると何がわかるか

Logger.logを入れておくと、コードが上から順番にどこまで進んだかを確認できます。たとえば、実行ログに「シートを取得しました」までは出ているのに、「A1セルに書き込みました」が出ていない場合、その間の処理で止まっている可能性があります。

コードが短い間はログがなくても読めますが、少し長くなると「どこまで動いたか」が見えにくくなります。そんなときにLogger.logを入れると、原因を探す範囲を小さくできます。

Apps Scriptの実行ログにエラー内容と行番号が表示されている画面
実行ログでは、処理の開始やエラー内容、止まった行番号などを確認できます。

Logger.logを入れる場所

最初は、むずかしく考えずに次のような場所へ入れてみましょう。

入れる場所確認できること
処理の最初関数が実行されているか
シートを取得した直後SpreadsheetAppの処理まで進んだか
変数を作った直後変数に期待した値が入っているか
セルへ書き込んだ直後setValueの処理まで進んだか
処理の最後最後までエラーなく動いたか

大切なのは、ログをたくさん入れることではありません。確認したい場所に、必要な分だけ入れることです。

変数の中身を確認する

Logger.logは、固定のメッセージだけでなく、変数の中身を確認するときにも使えます。

const message = "ログの練習です";
Logger.log(message);

ただし、ログに値だけを出すと、後から見たときに何の値かわかりにくいことがあります。そのため、次のように説明文をつけると確認しやすくなります。

Logger.log("messageの中身: " + message);

実行ログを見たときに「どの変数の値なのか」がすぐ分かるようにしておくと、後から見返したときにも迷いにくくなります。

Logger.logとconsole.logの違い

第2回では、ログ確認の例として console.log を使いました。GASでは、Logger.logもconsole.logも、処理の確認に使われます。

初心者のうちは、どちらを使っても「処理の途中経過を見えるようにする」という目的は同じです。まずは今回のようにLogger.logでログを出し、慣れてきたらconsole.logやconsole.timeなども必要に応じて使い分けるとよいでしょう。

初心者がよくつまずくポイント

  • コードを保存せずに実行して、古い内容のまま動いている
  • 関数名で logPractice を選んでいない
  • ログがスプレッドシート側に出ると思ってしまう
  • 実行ログを閉じたまま、ログが出ていないと勘違いする
  • エラー文を読まずに、コード全体を消してやり直してしまう

ログは、完成したアプリを利用者に見せるものではありません。自分がコードを作っている途中で、処理を確認するための道具です。この位置づけを押さえておくと、使いどころがわかりやすくなります。

小さな練習

今回の内容を確認するために、次の練習をしてみましょう。

  1. 「ログの練習です」を別の文章に変える
  2. A1ではなくB2セルに書き込む
  3. Logger.logの文章を1つ追加する
  4. message以外の変数を作り、その中身をログに出す
  5. わざと関数名を選び間違えて、何が起きるか確認する

正しく動かすことだけが目的ではありません。少し変えて、保存して、実行して、ログを見る。この流れをくり返すことで、コードの動きが見えやすくなります。

関連記事・参考リンク

まとめ

今回は、GAS入門講座の第3回として、Logger.logで処理の途中経過を確認する方法を紹介しました。

GASを学ぶときは、コードを一気に完成させようとするより、小さく動かして、ログで確認するほうが確実です。処理の開始、途中、完了にログを入れるだけでも、コードの流れがかなり見えやすくなります。

次回は、コメントを書いてコードを読みやすくする方法を扱います。