我使用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;
}
index.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线程数组从getEmails()函数传递到视图并动态创建表吗?
您不能传递此类对象(带有函数和自定义原型),只能传递“简单”对象(由字符串,数字,布尔值和数组或包含这些对象的对象组成),如文档中所述。因此,您将使用需要传递的值来构建一个对象。以您的使用示例为例,该示例仅获取线程中第一条消息的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()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句