Google Sheets:B列含“10:00 PM”时勾选M、N列复选框求助
修正后的Google Apps Script脚本
针对你的需求,以下是修正后的脚本,解决原脚本仅处理单列、匹配逻辑不够灵活的问题:
function updateCheckboxes() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Status'); if (!sh) return; // 避免工作表不存在时报错 const lastRow = sh.getLastRow(); if (lastRow < 2) return; // 无数据行时直接退出 const dataRange = sh.getRange(2, 1, lastRow - 1, sh.getLastColumn()); const displayValues = dataRange.getDisplayValues(); // 生成M列(索引12)和N列(索引13)的勾选状态数组 const checkboxValues = displayValues.map(row => { // 判断B列是否包含"10:00 PM",如需保留原脚本的周日/r[6]为空条件,可替换下方判断 const shouldCheck = row[1].includes("10:00 PM"); // 保留原条件的写法: // const shouldCheck = (row[1].includes("10:00 PM") && row[6] === "") || row[2] === "Sunday" || row[3] === "Sunday"; return [shouldCheck, shouldCheck]; // M、N列同步设置勾选状态 }); // 将状态写入M列(第13列)和N列(第14列) sh.getRange(2, 13, checkboxValues.length, 2).setValues(checkboxValues); }
关键修改说明
- 覆盖M、N两列:原脚本仅处理M列,现在返回包含两个元素的数组,同时设置M、N列的复选框状态
- 灵活匹配:用
includes()替代严格相等判断,确保B列单元格只要包含"10:00 PM"就触发勾选,避免因格式细微差异导致匹配失败 - 容错处理:添加工作表不存在、无数据行的判断,防止脚本运行报错
- 可定制条件:注释中保留了原脚本的周日/r[6]为空判断逻辑,可按需切换使用
内容的提问来源于stack exchange,提问作者Elmar Onassis
相关产品推荐
相关产品推荐

