如何在Google文档更新时自动同步修改日期至Google Sheets
实现Google文档修改时自动更新对应Sheet中的修改日期
可以实现,通过Google Apps Script的Drive触发器结合自定义函数,就能在文档修改时自动同步更新日期到Sheet。以下是具体方案:
步骤1:替换/新增脚本函数
把原有的myFunction替换为以下三个函数,或者直接添加到你的脚本项目中:
1. 单个文档日期更新函数
用于根据文档ID找到Sheet中对应行并更新修改日期:
function updateDocLastUpdated(fileId) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const idRange = sheet.getRange("A2:A" + sheet.getLastRow()); const ids = idRange.getValues(); // 遍历A列查找匹配的文档ID for (let i = 0; i < ids.length; i++) { if (ids[i][0] === fileId) { const lastUpdated = DriveApp.getFileById(fileId).getLastUpdated(); sheet.getRange(i + 2, 2).setValue(lastUpdated); // 更新对应行的B列 break; } } }
2. Drive文件变化监听函数
监听Drive中文件的编辑事件,仅处理Google文档类型:
function onDriveFileChange(e) { // 只响应文件编辑事件 if (e.changeType !== "EDIT") return; try { const file = DriveApp.getFileById(e.source.getId()); // 过滤仅处理Google文档 const docMimeType = "application/vnd.google-apps.document"; if (file.getMimeType() !== docMimeType) return; // 触发日期更新 updateDocLastUpdated(file.getId()); } catch (err) { console.error("更新失败:" + err.message); } }
3. 创建触发器的初始化函数
用于创建Drive的 onChange 触发器,只需运行一次:
function createDriveTrigger() { // 先清理同名旧触发器,避免重复触发 const existingTriggers = ScriptApp.getProjectTriggers(); for (const trigger of existingTriggers) { if (trigger.getHandlerFunction() === "onDriveFileChange") { ScriptApp.deleteTrigger(trigger); } } // 创建新的Drive onChange触发器 ScriptApp.newTrigger("onDriveFileChange") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onChange() .create(); }
步骤2:配置触发器
- 在脚本编辑器中,选择
createDriveTrigger函数,点击运行按钮▶️ - 按照提示完成权限授权(需要允许脚本访问你的Google Drive和Spreadsheet)
注意事项
- 确保Sheet的A列(从A2开始)存储的是准确的Google Doc ID,B列会自动填充修改日期
- Google Apps Script有触发器配额限制,个人使用场景下基本不会触及
- 如果Sheet中数据量很大,可考虑用
getValues结合对象映射优化查找效率,减少遍历耗时
内容的提问来源于stack exchange,提问作者Sergino
相关产品推荐
相关产品推荐

