求可编辑时长的Google Sheet自动清除脚本(闲置/末次输入后30分钟)
Google Sheet自动清除内容脚本(支持自定义闲置时长)
实现步骤
1. 打开脚本编辑器
- 打开你的Google Sheet,点击顶部菜单栏的
扩展程序>Apps 脚本,进入脚本编辑器。
2. 替换默认代码
删除编辑器中的默认代码,粘贴以下脚本:
// 自定义闲置时长(分钟),直接修改这个数值即可调整 const IDLE_MINUTES = 30; // 存储末次操作时间的标识 const LAST_ACTION_KEY = "lastActionTime"; // 监听单元格编辑,更新末次操作时间戳 function onEdit(e) { const docProps = PropertiesService.getDocumentProperties(); docProps.setProperty(LAST_ACTION_KEY, new Date().getTime().toString()); } // 检查闲置状态,超时则清除工作表内容 function checkIdleAndClear() { const docProps = PropertiesService.getDocumentProperties(); const lastActionTime = docProps.getProperty(LAST_ACTION_KEY); if (!lastActionTime) return; const now = new Date().getTime(); const idleDuration = (now - parseInt(lastActionTime)) / (1000 * 60); // 转换为分钟 if (idleDuration >= IDLE_MINUTES) { // 这里默认操作第一个工作表,要指定表名就换成getSheetByName("你的表名") const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; // 只清除内容保留格式用clearContent(),连格式一起清用clear() targetSheet.getDataRange().clearContent(); // 清除操作记录,防止重复触发 docProps.deleteProperty(LAST_ACTION_KEY); } } // 创建定时触发器(首次运行需授权) function setupTrigger() { // 先删除已有的同名触发器,避免重复 const existingTriggers = ScriptApp.getProjectTriggers(); existingTriggers.forEach(trigger => { if (trigger.getHandlerFunction() === "checkIdleAndClear") { ScriptApp.deleteTrigger(trigger); } }); // 设置每分钟检查一次闲置状态 ScriptApp.newTrigger("checkIdleAndClear") .timeBased() .everyMinutes(1) .create(); }
3. 配置与授权
- 调整脚本顶部的
IDLE_MINUTES数值,比如改成45就是45分钟后自动清除。 - 点击编辑器顶部的「运行」,先执行
setupTrigger函数,按提示完成授权(需要允许脚本访问你的Google Sheet)。
注意事项
- 每次编辑单元格时,
onEdit会自动更新末次操作时间,确保计时从最后一次输入开始算。 - 触发器每分钟检查一次,超时就会清除指定工作表的内容。如果要停止自动清除,可进入「编辑」>「当前项目的触发器」,删除对应的触发器即可。
- 若需要针对特定工作表操作,把
getSheets()[0]替换成getSheetByName("你的工作表名称")即可。
内容的提问来源于stack exchange,提问作者Melphoi
相关产品推荐
相关产品推荐

