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

Google Apps Script开发HTML Web应用时doGet报错与找不到文件问题咨询

问题原因
  • 代码中两处调用HTML模板的文件名不统一:getMessagesDisplay函数调用createTemplateFromFile('messages'),doGet函数中却写的是createTemplateFromFile('messages.html'),Google Apps Script加载HTML模板时只需填写文件名称,无需额外加.html后缀
  • 当前GAS项目中未创建名为messages的HTML文件,调用时找不到对应资源
doGet函数基础说明

doGet是Google Apps Script发布为Web应用时的强制入口函数,必须直接放在Code.gs文件的顶层,不能嵌套在其他函数内部。用户访问Web应用的公网URL时,GAS会自动触发执行doGet函数,将函数返回的内容渲染为前端页面。

修复步骤及正确示例
  1. 首先在GAS项目中新建HTML文件,命名为messages,系统会自动生成带后缀的messages.html文件,无需手动修改后缀
  2. 修正Code.gs代码如下:
// 从Gmail获取符合条件的邮件
function getRelevantMessages() {
  var threads = GmailApp.search("from:mike@lifewayhomes.net AND subject: Fwd: New submission from Find Me the Perfert Home", 0, 10);
  var messages = [];
  threads.forEach(function(thread) {
    messages.push(thread.getMessages()[0]);
  });
  return messages;
}

// Web应用入口函数
function doGet(e) {
  // 加载HTML模板,仅填写文件名前缀即可
  var templ = HtmlService.createTemplateFromFile('messages');
  // 将查询到的邮件数据传递给HTML模板
  templ.messages = getRelevantMessages();
  // 渲染模板并返回,同时设置页面标题
  return templ.evaluate().setTitle("messages");
}
  1. messages.html参考示例:
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>匹配的邮件列表</h1>
    <? for(var i=0; i<messages.length; i++) { ?>
      <div style="margin: 20px 0; padding: 15px; border: 1px solid #eee;">
        <h3>主题:<?= messages[i].getSubject() ?></h3>
        <p>发件人:<?= messages[i].getFrom() ?></p>
        <p>发送时间:<?= messages[i].getDate() ?></p>
        <p>内容:<?= messages[i].getPlainBody() ?></p>
      </div>
    <? } ?>
  </body>
</html>
部署注意事项
  • 代码修改后需要发布新版本才会生效,旧测试部署链接不会同步更新修改内容
  • 部署时根据需求选择访问权限范围,调用Gmail接口时需要按照提示完成相关权限授权

内容的提问来源于stack exchange,提问作者Brenda Harrison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:03:02