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

Google Sheets复选框累计勾选次数追踪:取消勾选不递减计数

Google Sheets 复选框累计勾选次数追踪方案

要实现复选框每勾选一次计数+1,取消勾选不减少计数的需求,普通函数无法满足,必须借助Google Apps Script的onEdit触发器监听编辑事件,自动更新累计数据。以下是具体实现步骤:

1. 表格结构准备

  • 主工作表(示例命名为数据录入):存放需要追踪的复选框,假设复选框位于B列。
  • 追踪工作表(示例命名为累计统计):
    • A列:对应主表的行号(可选,用于可视化对应关系)
    • B列:存储对应行复选框的累计勾选次数

2. 编写触发器脚本

  1. 打开Google Sheets,点击顶部菜单栏「扩展程序」>「Apps脚本」。
  2. 删除默认的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);
  }
}
  1. 点击脚本编辑器顶部的「保存」按钮,给脚本命名(比如CheckboxCounter)。

3. 授权与测试

  1. 首次保存后,点击编辑器顶部的「运行」按钮,按指引完成权限授予(Google的安全验证,授权后脚本才能访问表格数据)。
  2. 返回主工作表,勾选任意复选框,切换到累计统计表,对应行的B列计数会+1;取消勾选该复选框,计数不会减少。
  3. 多用户协作时,每个用户的勾选操作都会自动触发脚本更新计数,无需手动维护。

扩展功能(可选)

如果需要记录更多细节,比如每次勾选的时间、操作人,可以修改脚本在累计统计表中添加对应列:

// 在更新计数的代码块中添加
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:25