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

如何通过Google Apps Script比较日期并自动勾选复选框?

Google表格自动勾选早于指定年数日期的复选框脚本

针对你提到的需求:B列(从B2起)为日期列,C列(从C2起)为复选框列,需将B列日期与今日对比,若日期早于X年则勾选对应C列复选框,否则保留原状态,以下是修正后的可用脚本:

function autoCheckOldDates() {
  // 获取目标表格(替换成你的表格名称)
  const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Testing');
  // 设置判断阈值:早于X年则勾选,可自行修改数字
  const X = 2;
  // 获取今日时间戳
  const today = new Date().getTime();
  // 读取B列日期数据(范围根据实际行数调整)
  const dates = ss.getRange('B2:B23').getValues();
  // 读取C列现有复选框状态
  const checkboxStates = ss.getRange('C2:C23').getValues();
  let results = [];

  dates.forEach((dateRow, index) => {
    const date = new Date(dateRow[0]);
    // 跳过空日期行,保留原复选框状态
    if (isNaN(date.getTime())) {
      results.push([checkboxStates[index][0]]);
      return;
    }
    // 计算日期与今日的年差
    const yearDiff = (today - date.getTime()) / (1000 * 3600 * 24 * 365);
    // 满足年差条件或复选框已勾选时,设为勾选状态,否则保留原状态
    const shouldCheck = yearDiff >= X || checkboxStates[index][0];
    results.push([shouldCheck]);
  });

  // 将结果写入C列复选框
  ss.getRange('C2:C23').setValues(results);
}

关键说明

  • 把const X = 2;中的数字改成你需要的年数(比如3代表早于3年)
  • 调整B2:B23和C2:C23的范围,匹配你表格的实际数据行数;如果需要动态适配数据行,可以替换成以下代码获取最后一行:
    const lastRow = ss.getLastRow();
    const dates = ss.getRange(`B2:B${lastRow}`).getValues();
    const checkboxStates = ss.getRange(`C2:C${lastRow}`).getValues();
    
  • 脚本会保留原有复选框状态,仅在日期满足条件时勾选,空日期行不做修改

使用步骤

  1. 打开你的Google表格,点击顶部菜单「扩展程序」→「Apps脚本」
  2. 删除默认代码,粘贴上述脚本
  3. 点击保存按钮,给项目命名(比如AutoCheckDates)
  4. 点击运行按钮,首次运行需要完成授权操作(按照提示允许权限)
  5. 如需自动更新,点击左侧「触发器」图标,添加时间驱动触发器(比如每天运行一次)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:40:32