在 Google 文档中插入和删除 Table 中的文本

Insert and remove text in Table within Google Docs

我有一个 Google 包含 3x4 Table 的文档。我需要从函数中删除和添加那些 table 单元格中的文本。

我可以使用此代码索引所有 table 单元格值:

 var searchElement = copyBody.findElement(DocumentApp.ElementType.TABLE);
     var element = searchElement.getElement();
     var table = element.asTable();
     var tablerows = element.getNumRows();

        for ( var row = 0; row < tablerows; ++row ) {
          var tablerow = element.getRow(row)
          for ( var cell=0; cell < tablerow.getNumCells(); ++cell) {

            var celltext = tablerow.getChild(cell).getText();
            Logger.log( "Text is ("+celltext+")" );

logg 输出如下:

[16-01-19 01:23:31:663 PST] Text is (A)
[16-01-19 01:23:31:665 PST] Text is (C)
[16-01-19 01:23:31:666 PST] Text is (E)
[16-01-19 01:23:31:667 PST] Text is (X)
[16-01-19 01:23:31:669 PST] Text is (Row 2, Cell 1)
[16-01-19 01:23:31:670 PST] Text is (Row 2, Cell 2)
[16-01-19 01:23:31:672 PST] Text is (Row 2, Cell 3)
[16-01-19 01:23:31:673 PST] Text is (Row 2, Cell 4)
[16-01-19 01:23:31:675 PST] Text is (Row 3, Cell 1)
[16-01-19 01:23:31:677 PST] Text is (Row 3, Cell 2)
[16-01-19 01:23:31:678 PST] Text is (Row 3, Cell 3)
[16-01-19 01:23:31:679 PST] Text is (Row 3, Cell 4)

我之前用它来插入文本(自由格式,不在 table 个单元格中):

function insertText() {
 var body = DocumentApp.getActiveDocument().getBody();
 var val = body.findText('Hello! R3C3');
  if(val == null)
  {
   var text = body.editAsText();
   text.insertText(9, 'Hello! R3C3');         
  }
  else
  {
    body.replaceText('Hello! R3C3','');
  }
}

问题: 如何查找和替换文本,例如 第 2 行,单元格 1'Hello! R3C3' ?

以下是我在 Google 文档中将文本插入特定 table-cell 的方法:

首先'find'文档中的table:

  var copyDoc = DocumentApp.openById(copyId);
  var copyBody = copyDoc.getActiveSection();

          var searchElement = copyBody.findElement(DocumentApp.ElementType.TABLE);
          var element = searchElement.getElement();
          var table = element.asTable();
          var tablerows = element.getNumRows();

并在 insert/remove 文本中使用以下内容:

  //Row3Cell3
      var Row3Cell3 = table.getRow(2).getCell(2).getChild(0).getText();
      if(Row3Cell3 != 'Hello! R3C3')
      {
        var Row3Cell3_1 = table.getRow(2).getCell(2).getChild(0);
        Row3Cell3_1.setText('Hello! R3C3');         
      }
 else
  {
    copyBody.replaceText('Hello! R3C3','');
  }

所以我希望这对寻找类似解决方案的其他人有所帮助。

添加到约翰,如果你已经有了你需要的table,你可以通过以下方式编辑单元格文本:

table.getRow(rowIdx).getChild(colIdx).asText().setText('Your text here');

因此,在您的示例中(第 2 行,第 1 单元格):

table.getRow(1).getChild(0).asText().setText('Hello R3C3!');

参考: https://developers.google.com/apps-script/reference/document/table(getRow 和 getChild)