Google Sheets复选框累计勾选次数追踪:取消勾选不递减计数
Google Sheets 复选框累计勾选次数追踪方案
要实现复选框每勾选一次计数+1,取消勾选不减少计数的需求,普通函数无法满足,必须借助Google Apps Script的onEdit触发器监听编辑事件,自动更新累计数据。以下是具体实现步骤:
1. 表格结构准备
- 主工作表(示例命名为
数据录入):存放需要追踪的复选框,假设复选框位于B列。 - 追踪工作表(示例命名为
累计统计):- A列:对应主表的行号(可选,用于可视化对应关系)
- B列:存储对应行复选框的累计勾选次数
2. 编写触发器脚本
- 打开Google Sheets,点击顶部菜单栏「扩展程序」>「Apps脚本」。
- 删除默认的
myFunction代码,替换为以下脚本:
function onEdit(e) { // 配置参数,根据你的表格实际情况修改 const MAIN_SHEET = "数据录入"; const TRACKER_SHEET = "累计统计"; const CHECKBOX_COLUMN = 2; // 复选框所在列,B列对应2,A列对应1,以此类推 const editedSheet = e.source.getActiveSheet(); const editedCell = e.range; // 仅处理指定工作表、指定列的编辑事件 if (editedSheet.getName() !== MAIN_SHEET || editedCell.getColumn() !== CHECKBOX_COLUMN) return; const oldVal = e.oldValue; const newVal = e.value; // 只有当复选框从非选中状态变为选中状态时,才增加计数 if (newVal === "TRUE" && oldVal !== "TRUE") { const trackerSheet = e.source.getSheetByName(TRACKER_SHEET); const targetRow = editedCell.getRow(); // 获取当前累计数,若为空则默认0 const currentCount = trackerSheet.getRange(targetRow, 2).getValue() || 0; // 更新累计数 trackerSheet.getRange(targetRow, 2).setValue(currentCount + 1); } }
- 点击脚本编辑器顶部的「保存」按钮,给脚本命名(比如
CheckboxCounter)。
3. 授权与测试
- 首次保存后,点击编辑器顶部的「运行」按钮,按指引完成权限授予(Google的安全验证,授权后脚本才能访问表格数据)。
- 返回主工作表,勾选任意复选框,切换到
累计统计表,对应行的B列计数会+1;取消勾选该复选框,计数不会减少。 - 多用户协作时,每个用户的勾选操作都会自动触发脚本更新计数,无需手动维护。
扩展功能(可选)
如果需要记录更多细节,比如每次勾选的时间、操作人,可以修改脚本在累计统计表中添加对应列:
// 在更新计数的代码块中添加 const timestamp = new Date(); const user = e.user.getEmail(); // 假设C列存时间,D列存操作人 trackerSheet.getRange(targetRow, 3).setValue(timestamp); trackerSheet.getRange(targetRow, 4).setValue(user);
内容的提问来源于stack exchange,提问作者Oops
相关产品推荐
相关产品推荐

