如何对于循环'通过Google文档表

时间:2018-05-05 12:49:21

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

我在Google文档(非工作表)中有一个表格。第一列包含一个ID号,该ID号与Google Sheet中提交数据的相对ID相匹配。

//This is what the table looks like
//[id][name][favourite cheese]
//[3 ][bob ][chedder]
//[4 ][jane][old english]

我需要

  1. 遍历Google DOCUMENT表格中的每一行。
  2. 确定第一列中的单元格是否包含' text' (与身份证号码相同)
  3. 如果它包含文本,则更新具有新数据的行
  4. 这是我目前的代码:

    // Grab the Table
    var body = DocumentApp.openById('theId').getBody(),
      searchElement = body.findElement(DocumentApp.ElementType.TABLE),
      element = searchElement.getElement(),
      table = element.asTable();
    

    这段代码用于抓取表格,因为您无法在Google文档中为表格命名。

    我很惊讶我找不到更多信息。我尽我所能utilize the documentation,并且有一种感觉,我会使用“For Loop'搜索每一行,但我需要.getElement(行)循环?我可以使用.findText(),还是会显示包含文本的表的每个部分。也许我可以以某种方式在每一行的第一列中循环.getElement(row)和.findText()?

    我知道循环是一个相当基本的Javascript概念,只是Google Documents的做事方式令我感到困惑。

2 个答案:

答案 0 :(得分:1)

你是对的,你可以使用Javascript for循环遍历行。

for (var i = 0; i < table.getNumRows(); ++i) {
  var row = table.getRow(i);
  Logger.log(row.getText());
}

获得行后,您可以按照自己喜欢的方式使用它,例如从第一个单元格中获取文本: row.getCell(0).getText()

JavaScript中的字符串比较可以很简单===,然后您可以编辑您定位的单元格的文本(在此示例中为第二列):

if (row.getCell(0).getText() === id) {
  row.getCell(1).setText('foo');
}

答案 1 :(得分:0)

  for (let r = 0 ; r < table.getNumRows(); r++) { 
      row = table.getRow(r);
      for(let c = 0; c < row.getNumChildren(); c++){
        Logger.log(table.getCell(r,c).getText());
      }
  }

对于“完整”for循环,您可以利用该行并调用其子项的数量...