求助:如何实现列输入自动检测并跨区域更新的脚本方案
实现方案(Google Apps Script)
以下脚本可满足你的需求,支持多工作表监控,当指定条件触发时自动添加提示文本:
核心代码
function onEdit(e) { // 配置参数 - 根据实际表格修改 const TARGET_SHEETS = ['Sheet1', 'Sheet2', 'Sheet3']; // 替换为你的24-26个工作表名称 const LESSON_COLUMN = 10; // J列的列号(固定) const DATE_COLUMN = 11; // 日期所在列的列号(假设是K列,可自行调整) const PROMPT_COLUMN = 12; // L列的列号(固定) const OLD_LESSON = 'Lesson 5'; const NEW_LESSON = 'Lesson 6'; const PROMPT_TEXT = 'DATE PLS'; // 获取编辑事件数据 const range = e.range; const sheet = range.getSheet(); const row = range.getRow(); const col = range.getColumn(); const oldValue = e.oldValue; const newValue = e.value; // 过滤非目标场景 if (!TARGET_SHEETS.includes(sheet.getName()) || col !== LESSON_COLUMN) return; if (oldValue !== OLD_LESSON || newValue !== NEW_LESSON) return; // 检查日期是否为空 const dateCell = sheet.getRange(row, DATE_COLUMN); if (dateCell.getValue() === '') { // 在对应行的L列添加提示 sheet.getRange(row, PROMPT_COLUMN).setValue(PROMPT_TEXT); } else { // 日期已填写时清除提示(可选,可删除此块) sheet.getRange(row, PROMPT_COLUMN).clearContent(); } }
使用步骤
- 打开你的Google表格,点击顶部菜单「扩展」→「Apps 脚本」
- 删除默认的
myFunction代码,粘贴上面的脚本 - 修改
TARGET_SHEETS数组,填入所有需要监控的工作表名称;若日期不在K列,调整DATE_COLUMN的数值(比如日期在M列就填13) - 点击脚本编辑器顶部的「保存」按钮,给脚本命名(比如
LessonDatePrompt) - 首次运行脚本时会触发权限申请,按提示完成授权(需要允许脚本访问你的表格数据)
额外说明
- 如果你的工作表名称有统一规律(比如都是「班级XX」),可以把
TARGET_SHEETS的判断逻辑改成:
这样无需逐个填写工作表名称,更高效适配大量工作表if (!sheet.getName().startsWith('班级')) return; - 脚本会自动响应表格的编辑操作,无需手动触发
内容的提问来源于stack exchange,提问作者Touka Kirishima
相关产品推荐
相关产品推荐

