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

如何在Google Sheets中根据单元格输入的特定数值触发对应脚本运行?

Google Sheets单元格编辑触发自定义函数实现方案

核心实现逻辑

使用Google Apps Script自带的onEdit(e)简单触发器,该触发器会在用户手动编辑表格内容时自动执行,我们只需在触发器内增加编辑位置、输入值的判断逻辑,即可匹配调用对应的自定义函数。

完整实现代码

你可以直接将以下代码追加到你现有的Apps Script代码文件中即可:

function onEdit(e) {
  // 配置项:可根据你的实际需求修改
  const TARGET_CELL = 'E2'; // 要监听的目标单元格
  const SHEET_NAME = 'Sheet1'; // 要生效的工作表名称,如果你工作表名不是Sheet1请修改

  // 校验触发场景:只有编辑指定工作表的指定单元格才执行后续逻辑
  const activeSheet = e.source.getActiveSheet();
  if (activeSheet.getName() !== SHEET_NAME || e.range.getA1Notation() !== TARGET_CELL) {
    return;
  }

  // 获取用户输入的数值,匹配对应函数执行
  const inputValue = e.value;
  switch (inputValue) {
    case '25':
      _25();
      break;
    case '20':
      _20();
      break;
    // 后续要新增其他数值的触发逻辑,直接加case分支即可
    // case '30':
    //   _30();
    //   break;
    default:
      // 输入不匹配的数值时可自定义处理逻辑,比如清空E列公式,不需要可以删掉
      activeSheet.getRange('E2:E6').clearContent();
  }
}

// 你原有自定义函数保留即可
function _25() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('E2').setFormula('=(D2)/4');
  spreadsheet.getRange('E3').setFormula('=(D3)/4');
  spreadsheet.getRange('E4').setFormula('=(D4)/4');
  spreadsheet.getRange('E5').setFormula('=(D5)/4');
  spreadsheet.getRange('E6').setFormula('=(D6)/4')
};

function _20(){
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('E2').setFormula('=(D2)/5');  
  spreadsheet.getRange('E3').setFormula('=(D3)/5');
  spreadsheet.getRange('E4').setFormula('=(D4)/5');
  spreadsheet.getRange('E5').setFormula('=(D5)/5');
  spreadsheet.getRange('E6').setFormula('=(D6)/5');
};

注意事项

  • 首次部署需要完成授权:保存代码后,先在Apps Script编辑器中手动选择onEdit函数运行一次,按照提示完成授权,触发器才会正常生效。
  • 该触发器仅响应手动编辑单元格的操作,如果E2的数值是公式计算出来的,不会触发该逻辑。
  • 如果需要适配更多数值,不需要重复写多个相似的自定义函数,可以直接简化逻辑,根据输入值计算除数,批量设置公式即可,示例如下:
// 简化版逻辑,不需要单独写_25、_20等函数
function onEdit(e) {
  const TARGET_CELL = 'E2';
  const SHEET_NAME = 'Sheet1';
  const activeSheet = e.source.getActiveSheet();
  if (activeSheet.getName() !== SHEET_NAME || e.range.getA1Notation() !== TARGET_CELL) {
    return;
  }
  const inputNum = Number(e.value);
  // 校验输入是合法数值
  if (isNaN(inputNum) || inputNum <= 0) {
    activeSheet.getRange('E2:E6').clearContent();
    return;
  }
  const divisor = 100 / inputNum; // 25对应4、20对应5,自动计算除数
  activeSheet.getRange('E2:E6').setFormulaR1C1('=R[0]C[-1]/' + divisor);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:24:03