我如何使用<doc table =“”>。addTableRow()?</doc>

时间:2014-01-29 14:06:11

标签: google-apps-script

我知道Document的脚本API比Sheets的脚本API差,但我有一些我需要使用它的实例。在一种情况下,我想使用脚本向表中添加一行(或多行),但我无法使.addTableRow()工作。我没有得到任何错误,但我也没有添加任何行。有人能给我一个正确方向的推动吗? 这是一个例子:

function addRows() {
  var d = DocumentApp.getActiveDocument();
  var t =  d.getBody().getTables()[0];
  var qn = d.getSelection().getRangeElements().length;
  for (var i=0;i<qn;i++) {t.appendTableRow();} //append number of rows selected--doesn't work!
}

虽然我第一次在另一个应用程序中遇到了这个问题,我只是想在一个成功的脚本的末尾附加一行。

1 个答案:

答案 0 :(得分:0)

如果您熟悉如何在html中构建表格。其表格结构如下:

<table>
<tr><th>First Header</th><th>Second Header</th><th>Third Header</th></tr>
<tr><td>Some Content</td><td>More Content</td><td>And End of Row</td></tr>
</table>

有点像那样。除非您还添加了td之间的表数据或内容,否则添加表行不会执行任何操作。在html的情况下,您可以控制th和td的样式,因为它们是不同的标签。在这种情况下,您可以通过在构建它们时为它们分配不同的样式来控制它们的样式。所以代码往往是这样的。

   function addTableRow()
{
  var thStyle = {};
  thStyle[DocumentApp.Attribute.BOLD]=true;
  thStyle[DocumentApp.Attribute.FONT_SIZE]='12';
  var tdStyle = {};
  tdStyle[DocumentApp.Attribute.FONT_SIZE]='8';

  var datA = ["dog","lion","beaver","antelope"];
  var doc = DocumentApp.getActiveDocument();
  var bdy = doc.getBody();
  var tbl = bdy.getTables()[0];
  for(var j = 0; j < 2;j++)
  {
    var tr = tbl.appendTableRow();
    for(var i = 0 ; i < 4; i++)
    {
      var td = tr.appendTableCell(datA[i]);
      if(j==0)td.setAttributes(thStyle);
      if(j==1)td.setAttributes(tdStyle);
     }
  }
}

Google网站上似乎没有很多很好的例子,但还有一些其他网站做得很好。我选择了大部分here.