如何通过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(); - 脚本会保留原有复选框状态,仅在日期满足条件时勾选,空日期行不做修改
使用步骤
- 打开你的Google表格,点击顶部菜单「扩展程序」→「Apps脚本」
- 删除默认代码,粘贴上述脚本
- 点击保存按钮,给项目命名(比如AutoCheckDates)
- 点击运行按钮,首次运行需要完成授权操作(按照提示允许权限)
- 如需自动更新,点击左侧「触发器」图标,添加时间驱动触发器(比如每天运行一次)
内容的提问来源于stack exchange,提问作者Jason Caternolo
相关产品推荐
相关产品推荐

