为什么Google Apps脚本仅在脚本执行结束后才将分页符和数据插入表中?

问题描述 投票:1回答:1

我正在Google文档中运行GAS,以用G'Sheets中的一系列数据填写表格。当数据的长度超过第一页所能容纳的长度时,我将在第一张表末尾的段落中插入一个分页符。其余数据将插入第二页的第二个表中。一切正常,但是仅在脚本完成执行后,才将行和分页符添加到文档中。这给我带来了一个问题,因为我想在执行过程中将.gdoc转换为.docx,并且行不会转换为.docx,因为直到脚本结束它们才在.gdoc中。

function fillSampling(fileID, data) {
  var doc = DocumentApp.openById(fileID);
  var body = doc.getBody();
  var cellStyle = {};
  cellStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
  cellStyle[DocumentApp.Attribute.FONT_SIZE] = 8;
  cellStyle[DocumentApp.Attribute.BOLD] = false;
  var boldStyle = {};
  boldStyle[DocumentApp.Attribute.BOLD] = true;
  var table = body.getTables()[1];
  var tableHeader = table.copy();
  var r = 0;

  while(data[r]) {
    if(r==10) {
      body.insertPageBreak(body.getNumChildren()-1);
      table = body.appendTable(tableHeader);
    }
    var tableRow = table.appendTableRow();
    var c = 0;
    while(data[r][c]) {
      var cell = tableRow.appendTableCell(data[r][c]).setPaddingBottom(0).setPaddingTop(0);
      cell.getChild(0).asParagraph().setAttributes(cellStyle);
      if(c==0) cell.setAttributes(boldStyle);
      c++;
    }
    r++;
  }
}

这是填写第一张和下表的功能。然后,另一个调用此函数的函数将文档从.gdoc转换为.docx。谁能解释为什么行,分页符和第二张表似乎被缓存并且仅在执行结束后才添加到文档中?任何帮助将不胜感激,谢谢。

google-apps-script google-docs
1个回答
0
投票

根据您的情况,我认为将以下脚本放在fillSampling函数的最后一行将解决您的问题。

doc.saveAndClose();

参考:

© www.soinside.com 2019 - 2024. All rights reserved.