You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets onEdit函数未触发及相关问题咨询

问题解答

背景

我使用复选框标记脚本执行状态,禁止用户手动修改这些复选框。最初编写的onEdit函数本应弹出警告,但始终无法触发——即使创建了On Edit触发器且显示最近运行记录也无效(复选框位于Rules工作表的C列)。修正后函数正常运行,但目前有两个问题:

  1. 无法找到关闭邮件提醒的方法
  2. 若他人将表格保存到自己的Google Drive,邮件提醒会发送给他们还是原表格的我?

初始代码

function onEdit(e) {
  const r = e.Range;
  Logger.log(r.getName);
  if (r.getSheet().getSheetName() == "Rules") {
    if (r.Column == 3) {
      Browser.msgBox("Do not alter the check boxes manually, click the icon in the Implement column");
    }
  }
}

修正后代码

function onEdit(e) {
  const r = e.range;
  if (r.getSheet().getSheetName() == "Rules") {
    if (r.getColumn() == 3 && r.getRow() > 1) {
      r.setValue(!r.getValue());
      Browser.msgBox("Do not alter the check boxes manually, click the triangle in the Implement column");
    }
  }
}

解答

1. 关闭邮件提醒

你提供的修正后代码仅包含Browser.msgBox弹窗警告,无邮件发送逻辑。针对不同场景的关闭方式:

  • Google Sheets自带邮件通知:点击表格右上角的铃铛图标(通知设置),在面板中找到对应邮件通知规则,直接删除或关闭。
  • 脚本内置邮件发送:若脚本中存在未贴出的MailApp.sendEmail或GmailApp.sendEmail代码,找到对应语句并注释/删除即可。示例:
    // 注释掉邮件发送代码
    // MailApp.sendEmail("xxx@example.com", "主题", "内容");
    

2. 副本表格的邮件提醒归属

当他人将表格保存到自己的Drive时,会生成一个完全独立的副本:

  • 副本内的脚本将以副本所有者的身份运行
  • 若脚本包含邮件发送逻辑,邮件会发送给副本的所有者(即保存表格的人),而非原表格的你

补充:初始函数失效原因

初始代码的语法错误导致逻辑无法触发:

  • 使用了e.Range(首字母大写),正确应为e.range
  • 使用了r.Column(首字母大写),正确方法是r.getColumn()

内容的提问来源于stack exchange,提问作者PhilHibbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:43:10