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

求助:Google Sheets编辑指定工作表时自动应用条件格式遇source未定义错误

解决Google Sheets工作表编辑触发条件格式问题

问题根源

之前出现「source is undefined」错误,核心原因是手动运行onEdit函数时没有传入事件对象e,或者代码中未正确校验事件对象的有效性。

正确实现脚本

以下代码仅在「Data Responses」工作表被编辑时,为「Accountability Sheet」设置条件格式:

function onEdit(e) {
  // 校验事件对象,禁止手动运行
  if (!e) throw new Error('请通过工作表编辑触发此函数,请勿手动执行');
  
  const editedSheet = e.source.getActiveSheet();
  // 仅处理「Data Responses」工作表的编辑事件
  if (editedSheet.getName() !== 'Data Responses') return;
  
  const targetSheet = e.source.getSheetByName('Accountability Sheet');
  if (!targetSheet) throw new Error('未找到「Accountability Sheet」工作表');
  
  // 清除原有条件格式规则,避免重复叠加
  targetSheet.setConditionalFormatRules([]);
  
  // 创建值为'False'时标记红色的规则
  const redFormatRule = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo('False')
    .setBackground('#ff0000')
    .setRanges([targetSheet.getDataRange()])
    .build();
  
  // 创建其他值标记绿色的规则
  const greenFormatRule = SpreadsheetApp.newConditionalFormatRule()
    .whenTextNotEqualTo('False')
    .setBackground('#00ff00')
    .setRanges([targetSheet.getDataRange()])
    .build();
  
  // 应用新规则
  targetSheet.setConditionalFormatRules([redFormatRule, greenFormatRule]);
}

关键说明

  • 禁止手动运行:onEdit是简单触发器,依赖Google Sheets自动传入的事件对象e,手动运行会直接报错,必须通过编辑「Data Responses」工作表触发
  • 范围自定义:如果不需要为「Accountability Sheet」全表设置格式,可将targetSheet.getDataRange()替换为指定范围,例如targetSheet.getRange('B2:E100')
  • 表单提交优化:若仅需在表单提交时触发,可在脚本编辑器的「编辑」>「当前项目的触发器」中添加表单提交触发器,选择此函数,触发源设为对应的表单,这样比onEdit更精准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:43:25