Apps Scriptでスクリプトを書いていると、変数の値や処理の経過を確認したい場面があります。そんなときに役立つのがLogger.log関数と表示 > ログの機能です。この記事では、Logger.logを使ってログを出力する方法と、出力されたログを表示画面で確認する手順を解説します。これらをマスターすれば、デバッグ作業が格段にスムーズになります。
【要点】Logger.logとView > Logsを使ってApps Scriptのログを手軽に確認する方法
- Logger.log(‘メッセージ’): スクリプト内で任意の文字列や変数を出力します。これにより処理の途中経過を記録できます。
- View > Logs: スクリプト実行後にこのメニューを開くと、出力されたログを一覧で確認できます。ログは実行ごとに新しく保存されます。
- ログのクリア: ログ画面の「Clear」ボタンで古いログを削除できます。必要なログだけを残す運用がおすすめです。
ADVERTISEMENT
目次
Logger.logの仕組みとログの保存方法
LoggerオブジェクトはApps Scriptに組み込まれたログ出力専用のオブジェクトです。Logger.log関数を呼び出すと、引数で指定した値がログに出力されます。出力できるデータ型は文字列、数値、ブール値などで、オブジェクトの場合はtoStringメソッドで変換された文字列が出力されます。ログは一時的にGoogleのサーバーに保存され、スクリプトエディタの「表示 > ログ」から確認できます。保存期間は約30日間で、古いものから自動削除されます。また、1回の実行で出力できるログの最大サイズは約500KBです。これを超えると古いログから順に消えていきます。したがって、ループ内で大量のログを出力する場合は注意が必要です。
Logger.logはデバッグの第一歩として非常に便利です。特別な設定は不要で、コード内に1行追加するだけで簡単に使えます。また、ログは実行のたびに新しいセッションとして保存されるため、複数回の実行結果を比較することも可能です。ただし、ログの保存場所はスクリプトエディタ内に限定されており、他のアプリから直接参照することはできません。
Logger.logでログを出力してView > Logsで確認する手順
- スクリプトエディタを開く
Googleスプレッドシートを開き、メニューの「拡張機能 > Apps Script」をクリックします。新しいタブでエディタが開きます。 - 関数を作成する
デフォルトのmyFunctionに以下のコードを記述します。コードを記述したら「保存」ボタンをクリックしてプロジェクトを保存します。function myFunction() { Logger.log('Hello, World!'); } - スクリプトを実行する
ツールバーの「実行」ボタンをクリックするか、関数名を選択して「デバッグ」を押します。初回は権限の承認が必要な場合があります。画面の指示に従って承認を進めてください。 - ログを表示する
スクリプトエディタのメニューから「表示 > ログ」を選択します。画面下部にログパネルが開き、実行結果のログが表示されます。今回の例では「Hello, World!」と表示されます。
変数や日時を含むログ出力の例
ログには変数の値や日時を結合して出力することもできます。次のコードは、現在の日時と任意のメッセージを出力する例です。
function logWithDate() {
var today = new Date();
Logger.log('現在の日時: ' + today);
Logger.log('処理が完了しました');
}
このように文字列連結を使って任意の情報をログに出力できます。また、複数の引数をカンマで区切って渡すことも可能ですが、その場合は最初の引数だけがログに出力されるため注意してください。複数の値を出力したい場合は、文字列連結またはテンプレートリテラル(\` バッククォート)を使うと便利です。
スプレッドシートのセル値をログに出力する例
実際の業務では、シート上のデータをログで確認したい場面があります。次のコードはアクティブシートのA1セルの値をログに出力します。
function logCellValue() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var value = sheet.getRange('A1').getValue();
Logger.log('A1の値: ' + value);
}
これを実行すると、表示 > ログに「A1の値: ○○」と表示されます。ループ内で複数のセルを確認する場合も同様の方法で対応できます。
Logger.logを使う際の注意点とよくあるトラブル
ログが表示されない場合の対処法
スクリプトを実行してもログが表示されない場合があります。その原因として、スクリプトが正常に実行されていない、またはLogger.logの行が実行されていないことが考えられます。実行前に「デバッグ」モードではなく「実行」ボタンを押していることを確認してください。また、条件分岐内にLogger.logを書いた場合、その条件が満たされないと出力されません。関数が正しく呼び出されているか、エラーが発生していないかを確認するために、一度出力を関数の先頭に移動してテストすると良いです。
ログが古くて混乱する場合
View > Logsには過去の実行ログも残っています。現在の実行のログだけを見たい場合は、ログ画面の「Clear」ボタンで一旦クリアしてから再実行すると良いです。また、実行ごとに自動でログが追記されるので、新しい実行のログは一番下に追加されます。ログのタイムスタンプは実行日時で記録されるため、目的の実行を見つける際の目印になります。
大量のログを出力すると古いログが消える
1回の実行で出力できるログの最大サイズは約500KBです。大量のログを出力する場合、古いログから順に消えていきます。そのため、重要な情報は早めに別の場所(たとえばスプレッドシートのセルやファイル)に保存するなどの対策が必要です。ループ処理で毎回ログを出力する場合は、間引いて出力するか、配列にまとめて最後に一度だけ出力する方法を検討してください。
Logger.logとconsole.logの使い分け
Apps ScriptにはLogger.logの他にconsole.logというログ出力方法もあります。console.logはStackdriver Logging(Cloud Logging)にログを出力します。こちらはGoogle Cloud Consoleで詳細なフィルタリングや長期保存が可能ですが、設定が少し複雑です。簡単なデバッグにはLogger.log、本番環境での詳細なログ管理にはconsole.logを使い分けると良いでしょう。
ADVERTISEMENT
Logger.logとconsole.logの違い
| 項目 | Logger.log | console.log |
|---|---|---|
| 出力先 | 表示 > ログ | Stackdriver Logging(Cloud Logging) |
| アクセス方法 | スクリプトエディタの表示メニュー | Google Cloud Consoleで確認 |
| 保存期間 | 約30日間 | 設定により長期保存可能(デフォルト30日) |
| フィルタリング | 不可 | 詳細なフィルタリングが可能 |
| 料金 | 無料 | 基本無料だが大量に使用すると課金対象 |
どちらの方法も一長一短あります。Logger.logは手軽さが最大の利点です。console.logは高度な管理が求められる場合に適しています。まずはLogger.logから始めて、必要に応じてconsole.logに移行するとスムーズです。
まとめ:この記事では、Apps ScriptでLogger.logを使ってログを出力し、表示 > ログで確認する方法を解説しました。Logger.logは簡単なデバッグに最適で、スクリプトエディタ内で完結するため手軽です。また、console.logと使い分けることで、より本格的なログ管理が可能になります。まずはLogger.logから試してみて、スクリプトの動作を把握してみてください。日々のスプレッドシート業務でスクリプトを活用する際の強力な味方になるでしょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
