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

Google Sheets库存系统:实现增减库存后自动清空输入单元格

解决Google Sheets库存自动更新并清空输入单元格的问题

问题根源

你的代码存在两个核心问题:

  1. 内部定义的addStockLevel和removeStockLevel函数从未被调用,逻辑根本不会触发
  2. 没有判断编辑事件的触发位置,无法区分是"增加库存"还是"减少库存"操作

修正后的完整代码

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const editedCell = e.range;
  const stockCell = sheet.getRange("B2");
  // 处理库存单元格为空的情况,默认按0计算
  let currentStock = stockCell.getValue() || 0;

  // 编辑增加库存单元格(C2)时触发
  if (editedCell.getA1Notation() === "C2" && editedCell.getValue() !== "") {
    const addQty = Number(editedCell.getValue());
    // 仅当输入是有效数字时执行更新
    if (!isNaN(addQty)) {
      stockCell.setValue(currentStock + addQty);
      editedCell.clearContent();
    }
  }

  // 编辑减少库存单元格(D2)时触发
  if (editedCell.getA1Notation() === "D2" && editedCell.getValue() !== "") {
    const removeQty = Number(editedCell.getValue());
    if (!isNaN(removeQty)) {
      // 可选:避免库存变为负数,不需要可删除Math.max部分
      stockCell.setValue(Math.max(currentStock - removeQty, 0));
      editedCell.clearContent();
    }
  }
}

关键改进说明

  • 利用事件对象e:这是Google Apps Script简单触发器的标准用法,通过e.range精准获取编辑的单元格,比直接调用getActiveSheet更可靠
  • 增加输入校验:通过Number()转换输入值,isNaN()判断是否为有效数字,防止非数字输入导致的计算错误
  • 空值处理:当B2库存为空时,自动按0计算,避免初始状态下的NaN问题
  • 条件触发:仅当编辑的是C2/D2且输入不为空时才执行操作,避免误触发
  • 负数保护:用Math.max()确保库存不会低于0,根据业务需求可移除该逻辑

使用注意事项

  • 确保函数名称为onEdit,这是Google Sheets内置的简单触发器,无需手动配置触发器(脚本需绑定在当前库存表格中)
  • 若需要支持多行商品库存,可扩展逻辑判断编辑单元格的行号,例如editedCell.getRow() > 1结合列判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:06:09