将表添加到doc时出现服务器错误

时间:2014-05-28 02:55:17

标签: google-apps-script google-docs

我有一个Google Apps脚本,可以从一些地方提取一些数据,然后将其组合成特定格式的Google Doc。部分格式是一个表格,其中一些样式因单元格而异。一切都工作正常,直到一些数据包括新行。我的脚本开始失败时收到了非常有用的消息“我们很抱歉,发生了服务器错误。请稍等一下再试一次。”

我已经完成并删除了我可以处理的所有无关代码,这就是我所拥有的:

function executeBugTest(){

  var problemString = "1\n12";

  var style = {}; 
  style[DocumentApp.Attribute.FOREGROUND_COLOR] = "#000000";

  var document = DocumentApp.getActiveDocument();
  var body = document.getBody();
  var table = body.appendTable();

  var tableRow = table.appendTableRow();
  tableRow.appendTableCell().setAttributes(style);
  tableRow.appendTableCell(problemString);
  // error on the next line
  tableRow.appendTableCell();


};

以下是我发现导致错误所需的所有条件:

  • problemString必须包含新行
  • problemString必须至少包含4个字符(计算新行)
  • style必须设置某些内容(似乎并不重要)

不幸的是,这些都是要求:[。

以下是我尝试过的所有似乎都没有影响错误的内容:

  • 表格在页面上的位置
  • 表格前的内容
  • 同一表中的其他行
  • 同一表格中的其他列
  • 在同一个表中对setAttributes()的其他调用

关于这里发生了什么的任何想法?我将继续尝试并寻找构建此表的替代方法,但任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。根据我自己的经验和演示,问题是由您的problemString中的'\n'引起的。

我没有“干净”解决方案,但我确实有一个只需要额外一行的解决方法。

我在附加单元格时使用占位符文本,并使用replaceText()函数插入问题字符串。我将使用您的代码块(减去样式更改)来演示解决方法。

function executeBugTest(){

var problemString = "1\n12";

var document = DocumentApp.getActiveDocument();
var body = document.getBody();
var table = body.appendTable();

var tableRow = table.appendTableRow();
var cell1 = tableRow.appendTableCell("PlaceholderText");
var cell2 = tableRow.appendTableCell("Other Text);

cell1.replaceText("PlaceholderText", problemString);

};

希望这适合你:)