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

使用Apps Script HTML模板创建Google Sheets自定义对话框报服务器错误

Google Sheets 调用HTML模板触发服务器报错解决方案

问题描述

我在尝试为Google Sheets添加由HTML模板创建的自定义对话框时,所有操作都返回报错:"We're sorry, a server error occurred. Please wait a bit and try again."

为排除个人代码错误或与已有代码冲突的可能性,我搁置了原有项目,新建空白电子表格,仅添加Google开发者官方文档推荐的代码:

代码片段

Code.gs文件内容:

function doGet() {
  return HtmlService
  .createTemplateFromFile('Index')
  .evaluate();
}

Index.html文件内容:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Hello, World! The time is <?= new Date() ?>.
  </body>
</html>

但我仍然收到相同报错。我的代码中除了上述函数、从官方文档复制的HTML代码,以及一个用于触发该函数的简单自定义菜单外,没有其他内容。我尝试了该页面的其他示例,无论调用哪个函数,都返回同样的模糊报错。
测试用Google Sheets链接:点击访问

排查解决步骤

  • 确认文件名匹配:HTML文件必须严格命名为Index(大小写完全匹配),Apps Script文件名大小写敏感,命名不一致会直接触发服务器错误。
  • 修正入口函数逻辑:doGet是Web应用部署的专用入口函数,如果你是在Sheets界面内通过自定义菜单触发弹窗,不要调用doGet,请使用以下代码替换原有逻辑:
// 注册自定义菜单
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('自定义功能')
    .addItem('打开测试弹窗', 'openDialog')
    .addToUi();
}

// 触发弹窗的专用函数
function openDialog() {
  const htmlContent = HtmlService.createTemplateFromFile('Index')
    .evaluate()
    .setWidth(400)
    .setHeight(150);
  SpreadsheetApp.getUi().showModalDialog(htmlContent, '测试弹窗');
}
  • 检查Web应用部署配置:如果你需要通过doGet将页面发布为独立Web应用,部署时需将「执行身份」设置为自己的账号,「访问权限」设置为对应范围(测试阶段可先设置为「仅限我自己」),每次修改代码后需要部署新版本才会生效。
  • 排除缓存与权限限制:尝试用无痕模式打开表格运行代码,如果你使用的是企业/教育版Workspace账号,可联系管理员确认是否限制了Apps Script的HTML服务调用权限。

内容的提问来源于stack exchange,提问作者Atiq Zabinski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:18:03