有没有办法使用特定的 cname 来运行 Htmlservice web 应用程序? 我想使用 app.domain.com 之类的用户来运行 htmlservice 应用程序。
我发现这在 Google 网站内有效,但 Google 网站无法正确管理标签
不可能。您最多可以使用自定义 url 并对其进行编程以重定向到您的应用程序脚本 webapp。这样就很容易输入和记住。
@Karl_S 发布的解决方案适用于已发布的 /exec url,但不适用于 /dev url。此外,响应式设计会丢失,因为框架重定向会跳过 html 包装器中的视口设置。另一种方法是在您的域上托管包装 html 页面,并在头部添加视口设置,同时保留框架重定向的其余部分。例如,以下内容对我有用:
<html><head>
<title>My App</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<frameset rows="100%">
<frame src="https://script.google.com/a/.../exec"
title="My App"
frameborder="0"
noresize="noresize">
</frameset>
</html>
还要确保在禁用跨域限制的情况下发布脚本,即在脚本中确保调用
HtmlService.createTemplateFromFile(...)
.evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
希望它对某人有帮助。
我已经发布了通过带有屏蔽的转发子域工作的网络应用程序。 URL 不会更改,客户端交互可以正常工作,并且也会回传到我的文件中。因此,而不是 https://script.google.com/a/bondwood.net/d/1y3iLTLT.... 我有 mysubdomain.bondwood.net 如果我想传递参数,我必须抛出一个虚拟字符,所以 mysubdomain.bondwood.net/n?arg1=xyz&arg3=abc
请注意,目前任何响应式设计都会通过子域丢失,但可以通过原始 URL 运行。这是我目前发现的唯一不起作用的事情。
CNAME 记录是规范名称记录的缩写,是域名系统 (DNS) 中的一种资源记录,用于指定域名 是另一个域(“规范”域)的别名。所有信息,包括子域、IP 地址等,均由规范域定义。 CNAME
但是 HTML 服务允许您提供可以与服务器端 Apps 脚本功能交互的网页。 HTML 服务:创建和提供 HTML
对于公共页面(不适用于内部应用程序)来说,这是一个可疑的优势。
如果您确实想要拥有 Google Apps 脚本服务器,您需要在网络服务器上发布页面并通过 REST 进行交互。
是的,你会失去客户端API。你真的需要吗?
例如,您可以发布 GihHib 页面 使用 GitHub Pages 设置自定义域
看看我的简单应用程序,它部署在Google Drive Host
干杯!
我找到了一个改进 Rehan 答案的解决方案。加载框架集大约需要 10 秒,但使用 iframe 只需 1-2 秒。
首先我确保我的域名具有 SSL。
这是我在我的谷歌脚本中添加到 doGet 的代码:
function doGet() {
// Create a template from your index.html file
var template = HtmlService.createTemplateFromFile('index');
// Evaluate the template and serve HTML content
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
然后我将以下内容添加到 home.html (我使用 godaddy)。将样式高度和宽度设置为 100vh 很重要,这样边缘周围就没有空白。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>my site</title>
<style>
/* Remove border and padding from iframe */
html,body{
width:100%;
height:100vh;
overflow:hidden;
margin:0px;
padding:0px;
border:none;
}
iframe{
width:100%;
height:100vh;
overflow:hidden;
margin:0px;
padding:0px;
border:none;
}
</style>
</head>
<body>
<!-- Iframe container -->
<div id="iframe-container">
<iframe id="my-iframe" src="https://script.google.com/a/macros/.../exec" width="100%" height="600" frameborder="0"></iframe>
</div>
</body>
</html>