0

この質問への回答として、フレックス テーブルを使用して、テーブル (Google サイトに表示される) の各行のデータを収集するための短いフォーム (GUI 経由で構築) を表示するという役立つ方向性を指摘されました。

ただし、構文に問題があるようです。具体的には、テーブルの残りの部分を適切にレンダリングすることはできますが、GUI で構築されたフォームを一緒に正常にレンダリングすることはできません。

function doGet(){
    var app     = UiApp.createApplication();
    var tab     = app.createFlexTable();
    app.add(tab
               .insertRow(0).insertRow(0).insertRow(0)
               .insertCell(0, 0).setText  (0, 0, "data01")
               .insertCell(0, 1).setText  (0, 1, "data02")
               .insertCell(0, 2).setWidget(0, 2, app.loadComponent("myGui"))
               .insertCell(1, 0)
               .insertCell(1, 1)
               .insertCell(2, 0)
               .setBorderWidth(5).setCellPadding(10).setCellSpacing(10));
    return app;
}

どんな援助でも大歓迎です。

4

1 に答える 1

1

.insertCell() には、戻り値としてフレックステーブルがあります。したがって、連続した .setText() メソッドは正しくありません。FlexTable では、setWidget メソッドを数回使用するだけです。.insertRow または .insertCell メソッドを個別に呼び出す必要はありません。FlexTable には、各行に異なる数のセルを含める機能がありますが、(提供されたスニペットでは) このインスタンスでは必要がありません。

1 行 5 列の表の例。

tab.setWidget(0, 0, <Widgets or plain text>);
tab.setWidget(0, 1, <Widgets or plain text>);
tab.setWidget(0, 2, <Widgets or plain text>);
tab.setWidget(0, 3, <Widgets or plain text>);
tab.setWidget(0, 4, <Widgets or plain text>);

このリンクには、FlexTable の使用可能なすべてのメソッドとプロパティが表示されます。 https://developers.google.com/apps-script/class_flextable

あなたのコードは、Google のサンプル コードに基づいていますか? Google で「"Google apps script" FlexTable」を試して、他の開発者の例を見てみましょう。奇妙に聞こえますが、Google の例よりも (はるかに) 優れた例があり (私の意見では)、目標を達成するためのさまざまな方法について洞察を得ることができます。

そして最後に1つのヒント。コードの可読性は非常に重要です。特に、大量のコードを作成する場合は重要です。.insertRow および .insertCell メソッド呼び出しを使用したい場合は、.insertRow(0).insertCell(0, 0)... のように順番に使用してみてください。したがって、各行を連続して構築すると、何が行われるかが明確になります。それぞれ別の行。

お役に立てれば。

于 2012-09-16T08:47:36.990 に答える