将谷歌脚本对象传递给HTML模板
pass google script object to html template
我使用HtmlService在Google脚本中开发独立的Web应用程序。下面是代码的一部分:
脚本:
function doGet() {
getLabelsLists();
return HtmlService
.createTemplateFromFile('index')
.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function getEmails() {
var query = ...;
var threads = GmailApp.search (query);
return threads;
}
索引.html:
<? var data = getEmails(); ?>
<table>
<? for (var i = 0; i < data.length; i++) {
var message = data[i].getMessages()[0];
?>
<tr onclick= click(<?= message.getId() ?>)>
<td><?= message.getSubject() ?></td>
</tr>
<? } ?>
</table>
我想做的是在页面加载和单击调用函数上仅显示如下所示的按钮,该函数呈现带有结果的表格。
<input type="button" onclick="google.script.run.getEmails()" />
有什么想法如何将 gmail 线程数组从 getEmail() 函数传递到视图并动态创建表吗?
您不能传递此类对象(带有函数和自定义原型),而只能传递"简单"对象(由字符串、数字、布尔值和数组或包含这些对象的对象组成),如文档中所述。因此,您将使用所需的值构建一个对象,以便传递它。以仅获取线程中第一条消息的 id 和主题的使用示例为例,以下是它是如何完成的:
function getEmails() {
var query = "...";
return GmailApp.search(query).map(function(thread) {
var msg = thread.getMessages()[0];
return {id:msg.getId(), subject:msg.getSubject()};
}
}
然后,要"读取"值,您应该直接访问id
,而不是调用 getId()
和 subject
,而不是getSubject()
。
相关文章:
- 从Javascript和Php变量创建Html模板文档
- 在哪里存储HTML模板以在Backbone.js中使用
- 使用Brushed HTML模板
- 流路由器 - 将内容插入 HTML 模板
- jQuery 不会使用 .load() 加载外部 html 模板
- 加载 HTML 模板以通过浏览器与挖空组件一起使用
- 将HTML模板插入tinymce 4编辑器
- 在一个html模板中使用(点击)事件来控制单独模板Angular 2中的[hidden]元素
- 使用grunt预编译服务器端html模板
- 从HTML模板中的$http请求中检索的$scope访问更深层次的数据
- 使用带有html模板的react
- html模板vs通过js推送代码
- 问题:can't访问html模板AngularJS中的Json数据
- 在angular中使用html模板's ng开关
- 如何使用下一个 botton 和自动查找文件夹为 HTML 模板创建演示栏
- 使用 预测 API 数据更新的 HTML 模板
- 使用 Angularjs 的递归和将 Elemnts 附加到 HTML 模板
- 神秘的行,用于在 Webpack 中需要 html 模板:templates.keys().forEach(templa
- 验证至少一个复选框通过 Ajax 在 django html 模板中选中
- 如何在 AngularJS 中将自定义指令与外部 HTML 模板捆绑在一起