0

在回答这个问题时,我被指出了使用弹性表格显示一个简短表格来收集表格中每一行的数据(通过 GUI 构建)的有用方向(显示在 Google 协作平台中)。

但是,语法似乎存在一些问题。具体来说,虽然我可以让表格的其余部分正确呈现,但我无法让 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'ing: '"Google apps script" FlexTable' 并查看其他开发人员的示例。这听起来很奇怪,但有(很多)比谷歌的例子更好(在我看来),它会让你对实现目标的不同方式有所了解。

最后一个提示。代码的可读性非常重要,尤其是在编写大量代码时。如果您仍然想使用 .insertRow 和 .insertCell 方法调用,请尝试按顺序使用它们每个单独的行。

希望这可以帮助。

于 2012-09-16T08:47:36.990 回答