如何在Apps Script中识别点击对象,实现对应左侧单元格数值+1?
优化多按钮加1的方案
不用为每个按钮单独编写函数,所有按钮可以绑定同一个函数,通过识别按钮所在位置自动定位左侧单元格:
function add1ToLeftCell() { const sheet = SpreadsheetApp.getActiveSheet(); // 获取按钮所在的单元格范围(需确保按钮与目标单元格在同一行) const buttonRange = sheet.getActiveRange(); // 定位到左侧相邻单元格 const targetCell = buttonRange.offset(0, -1); const currentValue = targetCell.getValue() || 0; // 处理空单元格默认0 targetCell.setValue(currentValue + 1); }
使用说明:
- 把所有按钮都绑定到这个
add1ToLeftCell函数 - 确保每个按钮放置在目标单元格的右侧相邻单元格(比如目标是B3,按钮放在C3),点击时函数会自动找到左侧单元格执行加1操作
修复复选框无反应的问题
你的复选框代码存在语法和逻辑错误,修正后的代码如下:
function onEdit(e) { if (!e) throw "请勿在编辑器中直接运行此函数"; increment(e); } function increment(e) { const sourceSheet = e.source.getActiveSheet(); const editedRange = e.range; // 此处是属性,不是方法,需去掉括号 // 限定仅在"Checkbox"工作表、且编辑的是C列(第三列)的复选框时执行 if (sourceSheet.getName() !== "Checkbox" || editedRange.columnStart !== 3) return; // 获取左侧相邻单元格 const targetCell = editedRange.offset(0, -1); // 处理空单元格,默认加1后为1 const currentValue = targetCell.getValue() || 0; targetCell.setValue(currentValue + 1); // 重置复选框为未勾选(使用布尔值false,而非字符串) editedRange.setValue(false); }
错误说明:
const r = e.range();错误:e.range是属性,不是方法,无需加括号src未定义:你声明了source但判断时误用src,需统一变量名r.setValue("FALSE")错误:复选框的值为布尔类型,应使用false而非字符串- 重复判断列位置:前面的条件已限定列,后续重复判断可省略
使用说明:
- 确保C列单元格已插入复选框
- 工作表名称必须为"Checkbox"(若名称不同,修改代码中对应字符串即可)
内容的提问来源于stack exchange,提问作者JanaLee Moses
相关产品推荐
相关产品推荐

