【问题标题】:pass google script object to html template将谷歌脚本对象传递给 html 模板
【发布时间】:2014-11-17 17:35:32
【问题描述】:

我使用 HtmlService 在谷歌脚本中开发独立的网络应用程序。以下是部分代码:

脚本:

function doGet() {
 getLabelsLists();
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate().setSandboxMode(HtmlServi‌​ce.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() 函数传递到视图并动态创建表吗?

【问题讨论】:

    标签: javascript html google-apps-script


    【解决方案1】:

    您不能传递此类对象(带有函数和自定义原型),只能传递“简单”对象(由字符串、数字、布尔值和数组或包含这些对象的对象组成),如 the documentation 中所述。因此,您将使用传递它所需的值构建一个对象。以仅获取线程中第一条消息的 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()

    【讨论】:

    • 非常有帮助。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多