我在编程方面很新,主要是为了好玩,很抱歉,如果这个问题太明显了,那么如果你能回答好像我知之甚少就会感激... :)
所以我正在尝试使用Google Apps脚本创建一个网络应用程序,但我想首先在Dreamweaver中设计它并将该html用于应用程序(因为Google Scripts中不再存在“Build A UI”选项) 。 应用程序需要能够读取和修改原始html,以响应用户的操作。
我当时想要做到这一点,但当然没有用,
function doGet(e) {
var app = UiApp.createApplication();
var page = HtmlService.createHtmlOutputFromFile('MyHtml');
app.add(page);
return app;
}
当我写return page;
时确实有效,但是当我使用var app = UiApp.getActiveApplication();
=================================编辑========== =======================
以下是我需要Web应用程序来包含html页面的示例:
function showMyEmail() {
var app = UiApp.getActiveApplication();
var email = Session.getActiveUser().getEmail();
// Assuming 'email_lbl' is the ID of the already existing target label I want to modify.
app.getElementById('email_lbl').setText('Your email is: ' + email);
return app;
}
不幸的是我无法像那样使用它,因为“app”不包含任何名为“email_lbl”的对象。
因此,我需要找到一种方法将html文件嵌入到应用程序中,以便稍后在其他服务器端函数中使用UiApp.getActiveApplication();
。
另外 - 我的第一个例子显然返回了一个空白页面,因为“app”不包含“页面”。 (同样的问题当然......)
=================================编辑========== =======================
有什么建议吗?创造性的解决方案?我在这里想念的东西?
对不起我是多余的。我不知道如何更好地解释......
感谢您的关注!! 埃亚
答案 0 :(得分:1)
您将按照指出返回HtmlService本身。当服务器端运行应用程序脚本时,您的Html页面将处理所有客户端逻辑。因此,任何需要访问document
或window
的JavaScript都需要位于您的html页面中。由于它是一个webapp,因此您可以访问google.script.run
以在脚本中运行代码。
在以下网址查看有关此内容和网络应用的文档:
https://developers.google.com/apps-script/guides/html/reference/run
https://developers.google.com/apps-script/guides/web
code.gs
function doGet(e) {
var page = HtmlService.createHtmlOutputFromFile('MyHtml');
return page;
}
function square(val){
return val*val
}
MyHtml.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p id="val"></p>
</body>
<script>
google.script.run.withSuccessHandler(showVal).square(5);
function showVal(returnVal){
document.getElementById('val').textContent = returnVal
}
</script>
</html>