Google Apps Scriptには、ログを確認する方法として、以下の2つの方法が用意されています。
Logger.log
console.log
そこで今回は、GASでログ出力する2つの方法(Logger.log
とconsole.log
)の使い方やログを確認する方法、開発目的に応じた使い分けを紹介します。
Logger.log(data)
変数に格納されている値やちょっとした計算を確認するために、スクリプトエディタからGASのプログラムを実行する場合、Logger
クラスのlog
メソッドを使用します。
Logger.log(data);
第1引数data
には、ログとして確認したい値を設定します。
パラメータ | 型 | 説明 |
---|---|---|
data |
String |
ログとして表示するメッセージ |
function myFunction() {
// 『あいうえお』と表示される
Logger.log("あいうえお");
// 11.0と表示される
var num = 10+1;
Logger.log(num);
}
ログの確認方法
プログラムを実行した後に、ショートカットキー⌘+Enter(Windowsの方は、Ctrl+Enter)を押すことで、Logger.log
のログを確認することができます。
表示
> ログ
の順番に選択することでも確認できます。書式を使ったログ出力
また、Logger.log
には、%s
というログに表示する書式を整えるプレースホルダーが用意されています。
Logger.log(format, [values, …]);
パラメータ | 型 | 説明 |
---|---|---|
format |
String |
ログとして表示するメッセージ |
values |
Object... |
format パラメータ部分に挿入したい値、複数可 |
ナンノコッチャといった感じですが、サンプルコードを見れば「ハハン」とひらめくはずです。
function myFunction() {
// 『値は11.0です』と表示される
var num = 10+1;
Logger.log("値は%sです", num);
// 『現在は西暦2019年10月14日です』と表示される
var year = "2019";
var month = "10";
var day = "14";
Logger.log("現在は西暦%s年%s月%s日です", year, month, day);
}
Logger.log(format, [values, …])
ではなく、Logger.log(data)
を使った場合、
Logger.log("現在は西暦" + year + "年" + month + "月" + day + "日です");
となって、大変です。
変数が多い場合は積極的にLogger.log(format, [values, …])
を使いましょう。
format
パラメータ内の%s
の数が、Values
パラメータの引数の数と同じじゃないとエラーを起こします。console.log(data)
onOpen
やonEdit
、doPost
、時間主導型
といったトリガーから実行されるGASのプログラムは、Logger.log
では確認することができません。(※GASでWebアプリを作るときなどが当てはまります。)
トリガーを設定しているときに、ログを確認する方法は、console
クラスのlog
メソッドを使用します。
console.log(data);
第1引数data
には、ログとして確認したい値を設定します。
パラメータ | 型 | 説明 |
---|---|---|
data |
String |
ログとして表示するメッセージ |
// スプレッドシートが起動されたときに実行する
function onOpen() {
// 『あいうえお』と表示される
console.log("あいうえお");
// 11.0と表示される
var num = 10+1;
console.log(num);
}
ログの確認方法
onOpen
やonEdit
、doPost
、時間主導型
といったトリガーからプログラムを実行させます。余談ですが、Apps ScriptダッシュボードではLogger.log
のログも確認することができます。
書式を使ったログ出力
残念なことにGASでは${}
を使うことができません。
ですので、通常であればconsole.log(data)
で、Logger.log(format, [values, …])
みたいに書式を使ったログ出力ができないという訳です。
ところが、ユーザー定義関数でString.Format
的な置換関数を自作されていた方がいらっしゃったので、こちらを拝借してみました。(※飛び先のページがSSL化に対応していなかったので、リンクは割愛します。)
%s
というプレースホルダーではなく、{0}
,…{number}
で書式を使ったログ出力ができます。
// スプレッドシートが編集されたときに実行する
function onEdit() {
var Format = function(template, replacement)
{
if (typeof replacement != "object")
{
replacement = Array.prototype.slice.call(arguments, 1);
}
return template.replace(/\{(.+?)\}/g, function(m, c)
{
return (replacement[c] != null) ? replacement[c] : m
});
}
// 『現在は西暦2019年10月14日です』と表示される
console.log(Format("現在は西暦{0}年{1}月{2}日です", "2019", "10", "14"));
}
成功しました!
さいごに
今回は、GASでデバッグをするときにログを出力する2つの方法とその使い分けについて紹介しました。
Logger.log
:スクリプトエディタからGASを実行するときconsole.log
:onEdit
やdoPost
といったトリガーからGASを実行するとき
こまめにデバッグして、どこでエラーになったか迷子にならないようにしましょう〜!それでは