看不到来自 onEdit 触发器的日志

Dou*_*Fir 4 javascript google-sheets google-apps-script

我写了一个小函数:

function weeklyCurrency(e) {
  var changed_cell = e.range.getA1Notation();
  Logger.log(changed_cell);
}
Run Code Online (Sandbox Code Playgroud)

然后将其设置为可安装的 onEdit 触发器:

Resources > current projects triggers > weeklyCurreency > onEdit
Run Code Online (Sandbox Code Playgroud)

已保存

转到工作表并在单元格中键入任何值,然后返回编辑器并单击View > Logs

未找到用户日志。请运行您的脚本并重试。

我希望看到例如“ A15”。

为什么每次编辑时都看不到任何东西?

我还尝试通过将函数名称更改为onEdit()相同的内容来使用简单的触发器函数;没有结果。

Mog*_*dad 6

我不知道这个问题的根本原因,但这就是我所说的 Logger 的“片状行为”。

  • 每个脚本调用都会清除日志。每次onEdit触发函数时,它都会获得一个新的执行环境,其中包括空白日志。(因此,如果您进行两次编辑,第二次将清除第一个日志。)
  • 有时日志根本不显示。这可能是因为清除过去日志的处理时间比记录当前日志要长,因此两者都会被擦除。

在某种程度上,您的代码“对我有用”,因为我在没有修改的情况下运行它并且确实显示了日志 - 不是每次都显示。这让人很难相信。

还有其他情况使内置 Logger 不合适。

由于您在电子表格中工作,因此您可以通过其他方式来跟踪代码的执行情况:

这是所有这些选项的演示:

// from http://stackoverflow.com/a/32150927/1677912
function onEdit(e) {
  var changed_cell = e.range.getA1Notation();

  // Built-in Logger
  Logger.log(changed_cell);

  // Toast
  var ss = e.range.getSheet().getParent();
  ss.toast( "Changed cell: "+changed_cell );

  // Alert
  SpreadsheetApp.getUi().alert( "Changed cell: "+changed_cell );

  // Write to spreadsheet
  Browser.msgBox( "Changed cell: "+changed_cell );
  var logSheet = ss.getSheetByName("Log") || ss.insertSheet("Log");
  logSheet.appendRow([ new Date(), "Changed cell: "+changed_cell ] );

}
Run Code Online (Sandbox Code Playgroud)