gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:42:50 25 4
gpt4 key购买 nike

我写了一个小函数:

function weeklyCurrency(e) {
var changed_cell = e.range.getA1Notation();
Logger.log(changed_cell);
}

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

Resources > current projects triggers > weeklyCurreency > onEdit

Saved

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

No user logs found. Please run your script and try again.

我希望看到例如“A15”。

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

我还尝试通过将函数名称更改为 onEdit() 来使用简单的触发函数,但同样的事情;没有结果。

最佳答案

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

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

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

还有其他一些情况导致内置的Logger不适用。

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

  • toast消息

    var ss = e.range.getSheet().getParent();
    ss.toast( "Changed cell: "+changed_cell );
  • 用户界面 alerts

    SpreadsheetApp.getUi().alert( "Changed cell: "+changed_cell );
  • 浏览器 messages

    Browser.msgBox( "Changed cell: "+changed_cell );
  • 写入电子表格

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

    在这些选项中,我最喜欢这个。拥有一组持久的日志(不会每次都重置)和时间戳是很好的。它仍然需要遵循Restrictions适用于触发器 - 例如,一个简单的 onEdit() 只能将日志写入它绑定(bind)的电子表格。

    您可以进一步采用最后一种方法,并覆盖内置的 Logger 类,以便您项目中的所有日志都进入电子表格。您可以在 Did you know? (You can log to a spreadsheet from client JavaScript!) 中阅读更多相关信息,其中更全面地介绍了该主题。

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

// 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 ] );

}

关于javascript - 看不到来自 onEdit 触发器的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com