Javascript 使用Google Apps脚本和HtmlService将对象传递到模板

Javascript 使用Google Apps脚本和HtmlService将对象传递到模板,javascript,object,google-apps-script,Javascript,Object,Google Apps Script,所以我在谷歌电子表格中有一个植物列表,我想用HTML呈现。我有一个脚本,可以收集对象或数组中的信息,数组中的每个元素都是对象。每个工厂都有一个3位数的id,用作对象和数组中的键,如下所示: 对象[143]。创建日期=2012年12月15日 数组[143]。创建日期=12/15/2012 对象和数组都已正确创建 问题: var pRet = HtmlService.createTemplateFromFile('Plant Listing'); 我无法使用HtmlService和html模板将数

所以我在谷歌电子表格中有一个植物列表,我想用HTML呈现。我有一个脚本,可以收集对象或数组中的信息,数组中的每个元素都是对象。每个工厂都有一个3位数的id,用作对象和数组中的键,如下所示: 对象[143]。创建日期=2012年12月15日 数组[143]。创建日期=12/15/2012

对象和数组都已正确创建

问题:

var pRet = HtmlService.createTemplateFromFile('Plant Listing');
我无法使用HtmlService和html模板将数据转换为html。当以以下形式使用对象时:

pRet.data = myObject;
在html模板代码中,例如:

<? for(var x in data) { ?>
<? data[x].create_date ?>
然后,呈现的html循环并显示id为143的工厂的数据元素。如果我使用函数返回植物作为植物id的数组索引,那么我会得到一个数组,其中元素0到99未定义,第一个元素的任何数据都是元素100,对应于id为100的植物

我将apreadsheet中的数据呈现为对象的代码返回一个包含元素列表的对象,如下所示:

{143={stage_7=-1.0, index=20.0, stage_5=-1.0, stage_6=-1.0, stage_3=1.0, current_stage=1.0, strain=1.0, stage_4=0.0, location=1.0, stage_1=51.0, stage_2=61.0, id=143.0, create_date=Sat Dec 08 2012 00:00:00 GMT-0700 (MST), group=null}
将数据集作为plant id上索引的数组返回的代码返回该值,由于第一个plant索引为100,因此前100个元素为null:

{stage_7=-1.0, index=1.0, stage_5=-1.0, stage_6=-1.0, stage_3=5.0, current_stage=2.0, strain=1.0, stage_4=-1.0, location=2.0, stage_1=Mon Jul 09 23:00:00 PDT 2012, stage_2=56.0, id=100.0, create_date=Sat Dec 08 2012 00:00:00 GMT-0700 (MST), group=null}
问题:
我可以尝试使用哪些其他方法将数据从电子表格获取到呈现的html?我最初的想法是放弃将数组或对象索引中的元素放在plant id上的想法。另一种选择是使用数组并检查模板文件中是否有空条目。

HtmlService中存在一个已知错误,您无法将子属性分配给模板上的对象。所以这是失败的:

var = HtmlService.createTemplate();
t.x = {};
t.x.y = 1;  // This throws no error, but t.x.y will still be undefined!
然而,这是可行的:

var = HtmlService.createTemplate();
var x = {};
x.y = 1;
t.x = x;    // t.x.y will now correctly be 1

我们知道问题是什么,并计划解决它,但这并不重要,需要一些时间才能实施

这个问题解决了吗?关于将数据从服务器传递到客户端html,我做了另一个全面的回答:是的,这是固定的。
var = HtmlService.createTemplate();
var x = {};
x.y = 1;
t.x = x;    // t.x.y will now correctly be 1