Google 脚本 Web 应用程序从库导入 html

问题描述 投票:0回答:1

我正在尝试执行以下操作:

我的工作 Google Web 应用程序包含以下脚本,当然还有 page.html

function getHtmlBlob() {
  //Logger.log(e.parameter);
  var htmlTemplate = HtmlService.createTemplateFromFile("page");
  var htmlBody = htmlTemplate.evaluate().getContent();
  Logger.log(htmlBody);
  var blob = Utilities.newBlob(htmlBody, MimeType.HTML);
  return blob;
}

function doGet(e) {
  Logger.log(e.parameter);
  var blob = getHtmlBlob();
  return HtmlService.createHtmlOutput(blob);
}

我想发布一个带有 page.html 和第一个函数的库,将 webApp 中的库链接为“Lib”,并使用 doGet 如下

function doGet(e) {
  //Logger.log(e.parameter);
  //var body = Lib.getHtmlBlob();
  var body = Lib.getHtmlBlob().evaluate();
  return HtmlService.createHtmlOutput(body);
}

但它不起作用,我在运行 webApp 时获取 getHtmlBlob 函数的文本而不是网页(所以至少有一些链接)。调用该函数后,不管有没有 .evaluate() ,这都不起作用。

这就是我所看到的执行 WebApp 的情况

这是不可能的,还是我犯了一些错误? 目标是:发布我的 webApp 和

  1. 没有 page.html 文件可见(如果可能!)
  2. 为多个网络应用程序(如库)共享唯一的 page.html

我已经使用 GAS 库工作了很长时间,但到目前为止只是为了“保护”脚本函数。谢谢您的任何建议

google-apps-script web-applications
1个回答
0
投票

经过多次测试,答案似乎是:

  1. 落实田池的建议
  2. 请注意以下事项:
  • 如果您想在 Web 应用程序中获取 GAS 库,您可以照常
  • 您不需要部署该库,它也可以在 HEAD 版本中工作

但是

  • 您必须首先将“主”脚本部署为 WebApp
  • 只要引用库的 HEAD 版本(像往常一样),您就可以看到 Lib 代码的修改
  • 即使使用 /dev 链接,您也将无法看到“主”Web 应用程序代码的任何修改(以前在其他 Web 应用程序中从未遇到过)。

因此,在发布之前,您必须小心主代码和库代码之间的调用不匹配、拼写错误和其他错误。如需更多代码行或主 Web 应用程序代码中的更正,需要新版本。

就我而言,我试图在发布后对齐拼写错误和 Tanaike 建议,并期望它与 /dev 链接一起使用。

我移动了库中的大部分代码,所以这是库端

function getHtmlBlob() { var htmlTemplate = HtmlService.createTemplateFromFile("page"); //other code here var htmlBody = htmlTemplate.evaluate().getContent(); var blob = Utilities.newBlob(htmlBody, MimeType.HTML); return blob; }
这是网络应用程序的“主”面

function doGet(e) { var body = Lib.getHtmlBlob(); return HtmlService.createHtmlOutput(body); }
谢谢@Tanaike

© www.soinside.com 2019 - 2024. All rights reserved.