You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用Apps Script记录Google Doc访问日志并引导用户复制模板的方案咨询

问题1解决方案
  • 直接分享模板/复制链接无法让原文档脚本正常运行:原Doc绑定的简单触发器onOpen仅对拥有原文档编辑权限的用户生效,只读用户打开原文档不会触发脚本执行;用户通过复制链接生成的副本不会继承你原文档的绑定脚本,完全独立于原脚本体系,无法触发记录逻辑。
  • 用Google Sheet作为基座的方案更合理:你可以将所有记录逻辑、副本生成逻辑都放在Sheet的绑定脚本中,仅给用户开放Sheet的查看权限,用户打开Sheet后自动触发记录,也可设置按钮让用户主动点击生成Doc模板副本,所有操作都在你可控的权限范围内,不需要开放原Doc的编辑权限,也能稳定记录用户身份和访问时间。
问题2解决方案
  • 该功能仅对拥有原Doc编辑权限的用户生效,只读用户打开文档时不会执行onOpen触发器,无法弹出提示。如果你的目标用户都有原Doc编辑权限,可以用修改后的代码实现延迟X秒弹出复制提示,同时保留原有记录逻辑:
// 初始化计数
function setup() {
  var propertyService = PropertiesService.getDocumentProperties();
  propertyService.setProperty('viewCount', '0');
}

// 文档打开触发逻辑
function onOpen(e) {
  // 原有记录逻辑
  var count = parseInt(PropertiesService.getDocumentProperties().getProperty('viewCount')) + 1;
  PropertiesService.getDocumentProperties().setProperty('viewCount', count);
  Logger.log(count);

  var sheet = SpreadsheetApp.openById('替换为你的表格ID');
  var user = Session.getActiveUser().getEmail();
  var date = new Date();
  sheet.getSheetByName('View Count').appendRow([user, date]);

  // 延迟3秒(3000毫秒,可自行调整数值)弹出提示
  Utilities.sleep(3000);
  var ui = DocumentApp.getUi();
  ui.alert('使用提示', '请点击文件 > 制作副本,创建自己的填写模板,不要直接修改原文档', ui.ButtonSet.OK);
}
  • 注意:Utilities.sleep()的参数单位是毫秒,你可以根据需要调整延迟时长。

内容的提问来源于stack exchange,提问作者Allister Lobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:57:03