かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Google Apps Script スプレットシートでスクリプトのlogをとりたい。

何かと楽なのでGoogle Driveのスプレットシートを使うのですが、自動化をしたいとかでApps Scriptを書いている時、スクリプトエディターから実行させるだけ時はLogger.log()で書いておいてメニューの表示からログを表示させておけばよいのですが、セル内を変更した時に処理と行いうといった時にデバックする良い方法が見つからなかったので、シートにログを吐き出すスクリプトを作ってみました。

// ログを出力するオブジェクト
var Log = (function() {
  // logを書き出すシート名 log という名前のシートを予め作成しておく必要があります。
  var sheetName = 'log';
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  return {
    write: function(val) {
      var row = ss.getLastRow();
      var cells = ss.getRange(row + 1, 1, 1, 2);
      var timestamp = new Date();
      cells.setValues([[timestamp, val]]);
    },
    clear: function() {
      ss.clear();
    }
  }
})();

// 使い方 編集イベントなど
function onEdit(e) {
  var ss = evt.source.getActiveSheet();

  // ログを書き出す (編集のあったシート名をlogに書き出す)
  Log.write( ss.getName() );

  // ログを全部消す
  Log.clear();
}

公式ドキュメントがもう少し充実して欲しいデース... (で、どうやればいいの?が結構わかりづらい気がしまーす)
[参考]

NEW GAME! (2) (まんがタイムKRコミックス)

NEW GAME! (2) (まんがタイムKRコミックス)