在 Google Docs Apps 脚本中创建一个非统一的 table

Create a non uniform table in Google Docs Apss Script

我正在寻找两种方法来实现我想要的。都没有成功。

我想要的:通过单击菜单按钮,我希望将 table 插入到我正在编辑的 Google 文档中(在 MS Word 中我只会使用宏)。 table 是非统一的,但所有行都应填满文档的宽度。

方法 1:我在另一个 Google 文档中制作了 table 并尝试“copy/paste” 内容,但我总是以错误告终:

var docToCopyID = '---The Id of the Google Doc with only a table in it---';
var bodyToCopy = DocumentApp.openById(docToCopyID).getBody();
var tableToCopy = bodyToCopy.getTables[0];

var docBody = DocumentApp.getActiveDocument().getBody();

docBody.appendTable(tableToCopy);

我得到的错误是(翻译自丹麦语): 异常:应读取对象 DocumentApp.Body 时的意外错误、方法或属性 appendTable。

方法二:我尝试通过代码构建table,结果是单元格之间有一个空行:

  var docBody = DocumentApp.getActiveDocument().getBody();
  
  var cells1 = [
  ['Beslutning'],
  ['']
  ];
  var cells2 = [
  ['Ansvarlig','','Dato','dd.mm.yyyy']
  ];
  
  docBody.appendTable(cells1);
  docBody.appendTable(cells2);

无论我最终得到的是干净的代码还是使用 copy/paste 方法,对我来说都无关紧要。提前致谢!

可能需要更正您的第一个代码中的两行:

function myFunction() {
  var docToCopyID = '###';
  var bodyToCopy = DocumentApp.openById(docToCopyID).getBody();
  var tableToCopy = bodyToCopy.getTables()[0];  // <--- here  ()

  var docBody = DocumentApp.getActiveDocument().getBody();

  docBody.appendTable(tableToCopy.copy());      // <--- here  .copy()
}

至于方法二,应该是这样写的:

function create_table() {
  var docBody = DocumentApp.getActiveDocument().getBody();

  var row1 = ['Beslutning', '', '', ''];
  var row2 = ['Ansvarlig', '', 'Dato', 'dd.mm.yyyy'];

  var table = [row1, row2];

  docBody.appendTable(table);
}

但老实说,我不明白你所说的 'non uniform' table 是什么意思。你能展示一下它们的样子吗?