0

我正在尝试制作一个自动化脚本,根据来自 Google 表单的用户响应更新现有的 Google 文档。所以有 3 个问题(姓名、大学编号识别或国语 NIM,以及部门或 bidang),部门问题用于对每个受访者进行分类。

所以目标是每当提交表单时,文档也会更新。因此,我想让更新创建一个新行,其中包含一个包含模板字符串的单元格,该模板字符串已在电子表格的脚本中使用。但问题是它只为每一行附加一列,然而,这不是我打算发生的。我希望它更新 1 行和 2 列。

Google 表单的屏幕截图

Google 文档错误的屏幕截图

我打算将 Google Docs 更新为的屏幕截图

function appendTable(variabel){
      var rangePSDI = body.findText(variabel);
      var searchElement = body.findElement(DocumentApp.ElementType.TABLE, rangePSDI);
      element = searchElement.getElement();
      table = element.asTable();
      table.appendTableRow().appendTableCell(variabel);
  }

  if (bidang == 'PSDI') {
      body.replaceText('{{NamaPSDI}}', nama);
      body.replaceText('{{NIMPSDI}}', nim);
      appendTable("{{NamaPSDI}}");
      appendTable("{{NIMPSDI}}");
      return;
  } else if (bidang == 'PSDM') {
      body.replaceText('{{NamaPSDM}}', nama);
      body.replaceText('{{NIMPSDM}}', nim);
      appendTable("{{NamaPSDM}}");
      appendTable("{{NIMPSDM}}");
      return;
  }
4

1 回答 1

1

appendTableRow视为<tr>HTML 中的,您必须使用<td>appendTableCell设置单元格。

请参阅HTML 中的表格行元素

尝试这个:

代码:

function appendTable(){
  var doc = DocumentApp.openById('someid');
  var body = doc.getBody();
  var tables = body.getTables();
  var text = "PSDM";
  tables.forEach(table => {
    if(table.getCell(0,0).getText() == text){
      table.replaceText("{{Nama"+text+"}}", "test nama"+text)
      table.replaceText("{{NIM"+text+"}}", "test NIM"+text)
      var tr = table.appendTableRow();
      tr.appendTableCell("{{Nama"+text+"}}");
      tr.appendTableCell("{{NIM"+text+"}}");
    }
  })
}

前:

在此处输入图像描述

后:

PSDI

在此处输入图像描述

PSDM 在此处输入图像描述

于 2021-01-21T22:16:10.610 回答