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

如何在Google Script中填入文档/模板ID实现模板自动填充

问题修复方案

你的代码存在3处核心问题导致运行中断,无法完成完整的文件生成流程,对应修复方式如下:

问题清单

  • 未定义date变量:重命名文件时调用了未声明的date变量,代码执行到这一步会直接抛出异常终止,后续占位符替换逻辑也不会运行
  • 缺少函数闭合大括号:你提供的代码末尾没有}来闭合myFunction函数,属于基础语法错误
  • 未明确副本保存位置:默认makeCopy()无参数时确实会保存到根目录,但如果模板是他人共享的文档,副本可能会默认存到模板所在的共享目录,建议显式指定保存位置避免找不到文件

修复后可直接运行的代码

function myFunction() {
  // 弹窗获取用户输入
  var ui = DocumentApp.getUi();
  var nameResponse = ui.prompt('Enter sales persons name');
  var client1Response = ui.prompt('Enter client 1');
  var sales1Response = ui.prompt('Enter sales 1');
  
  // 定义date变量,格式为本地日期,可根据需求修改格式
  var date = new Date().toLocaleDateString();
  
  // 复制模板到Drive根目录,替换下面引号内的内容为你自己的模板ID
  var templateId = '<替换为你的模板文档ID>';
  var documentId = DriveApp.getFileById(templateId)
    .makeCopy(DriveApp.getRootFolder()) // 显式指定保存到根目录
    .getId();
      
  // 重命名复制后的文件
  DriveApp.getFileById(documentId).setName(nameResponse.getResponseText() + date + ' Sales Report');  
      
  // 替换占位符
  var body = DocumentApp.openById(documentId).getBody();
  body.replaceText('##name##', nameResponse.getResponseText());
  body.replaceText('##client1##', client1Response.getResponseText());
  body.replaceText('##sales1##', sales1Response.getResponseText()); 
}

运行注意事项

  • 首次运行脚本需要授权访问你的Google Drive和Google Docs权限,弹窗提示授权时点击允许即可
  • 确认你的账号对填写ID的模板文档有至少「查看」权限,如果是他人共享的模板,建议先复制到自己的Drive后再使用对应ID
  • 如果生成后还是找不到文件,可以在Drive搜索栏输入生成的文件名关键词(比如你输入的销售姓名+Sales Report)搜索,避免因为Drive排序规则看不到最新文件

内容的提问来源于stack exchange,提问作者Seamus McAfee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:07