0

だから私は HTML でレンダリングしたい Google スプレッドシートに植物のリストを持っています。配列の各要素がオブジェクトであるオブジェクトまたは配列のいずれかで情報を収集するスクリプトがあります。各植物には、次のようにオブジェクトと配列の両方でキーとして使用される 3 桁の ID があります。

オブジェクトと配列の両方が適切に作成されています。

問題:

var pRet = HtmlService.createTemplateFromFile('Plant Listing');

HtmlService と html テンプレートを使用してデータを html に変換するのに問題があります。オブジェクトを次の形式で使用する場合

pRet.data = myObject;

次のような html テンプレート コード内:

<? for(var x in data) { ?>
<? data[x].create_date ?>

TypeError としてレンダリング: プロパティ "create_date" を null から読み取れません。しかし、次のようにデータをテンプレートに渡すと:

pRet.Data = myObject[143];

次に、レンダリングされた html がループして、ID が 143 の植物のデータ要素が表示されます。植物 ID によって配列インデックスとして植物を返す関数を使用すると、0 から 99 までの要素が未定義の配列が得られます。 id が 100 の植物に対応する要素 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}

植物 ID でインデックス付けされた配列としてデータ セットを返すコードは、最初の植物インデックスが 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 にデータを取得するために試みることができる他の方法は何ですか? 私の最初の考えは、プラント ID の配列またはオブジェクト インデックスのいずれかに要素を含めるという考えを捨てることです。もう 1 つのオプションは、配列を使用して、テンプレート ファイル内の null エントリをチェックすることです。

4

1 に答える 1

1

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

問題が何であるかはわかっており、修正する予定ですが、重要な問題であり、ロールアウトには時間がかかります。

于 2012-12-15T23:03:24.783 に答える