使用Google apps脚本中的数组输入附加表

时间:2015-11-26 15:28:35

标签: javascript google-apps-script google-apps

我一直在尝试将一个函数添加到一个附加组件中,该附加组件将在文档的末尾创建一个表。

按钮文本在HTML中定义为:

<button onclick="google.script.run.chronTable()">In Order</button>

.gs文件中的函数如下:

function chronTable() {

  var body = DocumentApp().getActiveDocument().getBody();
  var chronTable = body.appendTable();

    //Create 5 rows and 4 columns
  for(var i=0; i<3; i++){
    var tr = chronTable.appendTableRow();
    }
    //add 4 cells in each row
    for(var j=0; j<2; j++){
      var td = tr.appendTableCell('Cell '+i+j);
    }
}

最后,我想插入我在早期函数中定义的文本,该函数使用HTML中的按钮将属性应用于文本,并且我将其存储在数组中,如下所示:

function highlightStyleRed() {

  //App>Doc>Body>Paragraph>Text
  //selection>rangeElements>RangeElement>Element>Text

  var selection = DocumentApp.getActiveDocument().getSelection();
  if (selection) {

//declare variables once before loop
var elements = selection.getRangeElements();    
var rngEelement;
var element;
var text;
var startOffset;
var endOffsetInclusive;
var redSelected = []; // creates array for export to appended table

//loop through selection
for (var i=0; i < elements.length; i++){
  rngElement = elements[i];
  element = rngElement.getElement();
  if (element) {
    text = element.asText();  
    if (text) {
      //if we are on a 'partial element' we need to only grab the selected part of the text
      if (rngElement.isPartial()) {
        startOffset = rngElement.getStartOffset();
        endOffsetInclusive = rngElement.getEndOffsetInclusive();
        text.setBackgroundColor(startOffset, endOffsetInclusive, '#ff3333');
        redSelected.push(text);//pushes text to array

      } else {
        text.setBackgroundColor('#ff3333');
        redSelected.push(text);//pushes text to array

      }
    }
  }
}

}   }

到目前为止,我甚至无法让桌子显示出来。这段代码中是否缺少某些内容?

此外,当我尝试声明数组并将数组插入表格单元格时,无法识别它。我可以声明在不同函数中创建的数组吗?

1 个答案:

答案 0 :(得分:0)

在你的第一个代码中,你必须将for循环放在另一个for循环中:

for(var i=0; i<3; i++){
    var tr = chronTable.appendTableRow();

    //add 4 cells in each row
    for(var j=0; j<2; j++){
      var td = tr.appendTableCell('Cell '+i+j);
    }
}

使用上一代码,它创建了一个表,但在Doc。

中创建了一个错误

对于你的问题的第二部分,我不确定你试图做什么。你能解释一下吗?或举个例子。