Google apps script 在Google应用程序脚本中将变量显示为html?
假设我们有一个变量。此变量是在google应用程序脚本中创建的。在该应用程序脚本项目中,您有两个文件。首先是.gs文件,变量来自该文件。接下来是html文件。如何将变量转换为htmlGoogle apps script 在Google应用程序脚本中将变量显示为html?,google-apps-script,google-sites,Google Apps Script,Google Sites,假设我们有一个变量。此变量是在google应用程序脚本中创建的。在该应用程序脚本项目中,您有两个文件。首先是.gs文件,变量来自该文件。接下来是html文件。如何将变量转换为html GAS: function doGet() { return HtmlService.createHtmlOutputFromFile('index'); } function items() { var exmp = 45; document.getElementById("test").
GAS:
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
function items() {
var exmp = 45;
document.getElementById("test").innerHTML = "You have " + exmp + " items";
HTML:
<script>
google.script.run.items();
</script>
<div id="test"></div>
气体:
函数doGet(){
返回HtmlService.createhtmloutpfromfile('index');
}
功能项(){
var-exmp=45;
document.getElementById(“test”).innerHTML=“您有”+exmp+“项”;
HTML:
google.script.run.items();
但是,这不起作用。我如何才能做到这一点?您需要首先使用createHTMLOutput函数创建HTML 为了附加字符串,必须使用var.append方法
function items(){
var email = Session.getActiveUser().getEmail();
var output = HtmlService.createHtmlOutput(email);
var string1 = HtmlService.createHtmlOutput('<p>You have </p>')
string1.append(output);
string2= HtmlService.createHtmlOutput('<p> items</p>')
string1.append(string2);
Logger.log(string1.getContent());
}
功能项(){
var email=Session.getActiveUser().getEmail();
var output=HtmlService.createHtmlOutput(电子邮件);
var string1=HtmlService.createHtmlOutput(“您有””)
string1.追加(输出);
string2=HtmlService.createHtmlOutput(“items”)
string1.追加(string2);
Logger.log(string1.getContent());
}
如果您仔细阅读HTML服务文档的一节,您会发现一个示例几乎完全符合您的要求。下面的代码将该示例改编为您的示例
您需要将GAS服务器的内容与HTML客户端的内容分开。例如,document.getElementById(“test”).innerHTML=…
在服务器/GAS代码的上下文中不表示任何内容。相反,对文档的修改将由客户端的Javascript完成—在本例中,是通过一个脚本
成功处理程序是一个客户端Javascript回调函数,它将从服务器函数items()
接收异步响应
客户端对服务器端函数的调用是异步的:在
浏览器请求服务器运行函数doSomething(),即
浏览器立即继续到下一行代码,无需等待
请回答
这意味着无需等待对服务器功能的调用返回代码…浏览器将继续运行。在本例中,您将看到“更多加载…”文本显示在google.script.run
调用之后,但在收到响应之前
如果items()
需要执行更高级的操作…比如从电子表格中读取信息?继续并更改它…只需确保return
返回要显示的文本,并且返回的内容将是有效的HTML(因此innerHTML
操作正常)
代码.gs
index.html
正在加载。。。
成功时的功能(项目){
document.getElementById('test').innerHTML=items;
}
google.script.run.withSuccessHandler(onSuccess.items();
document.getElementById('test').innerHTML=“更多加载…”;
你应该真正解释一下为什么这可以解决问题。@NathanielFord这很明显!用户缺少一个关键的createHtMloutput函数你的答案(正确地)落在了低质量的审阅队列中。如果正确的答案是“你缺少createHtMloutput()
您的答案没有明确指出这一点,更重要的是可以描述createHtmlOutput()
和createHtmlOutput fromfile()
之间的区别,或者至少是其中一个出错的原因。通常说“试试这个”一块未注释的代码将被投票为低质量代码。我留下注释的唯一原因是为了让您了解队列状态。我想我应该做一个更好的示例。如果变量始终为45,则此示例有效。我真正拥有的是:GAS检查电子表格并查找用户的电子邮件地址。找到后,它会保存一个值e将其与变量关联。因此每次变量都不同。@user3743564这里的关键是创建htmloutput函数。您可以调整其余的。
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
function items() {
Utilities.sleep(5000); // Added to allow time to see the div content change
var exmp = 45;
return( "You have " + exmp + " items" );
}
<div id="test">Loading...</div>
<script type="text/javascript">
function onSuccess(items) {
document.getElementById('test').innerHTML = items;
}
google.script.run.withSuccessHandler(onSuccess).items();
document.getElementById('test').innerHTML = "More loading...";
</script>