Google App脚本代码中的Servererror

时间:2015-11-21 16:52:53

标签: google-apps-script google-sheets

在我的Google表格中,我想将文档中所有不同工作表的范围复制到第一页作为摘要。为此我尝试使用此代码:

function listAllTasks()
{
  var startRow = 2;
  var startColum = 3;

  var rowIndex = 2;

  var document = SpreadsheetApp.getActive();
  var sheets = document.getSheets();

  // Skip first Sheet
  for(var i=1; i < sheets.length ; i++)
  {
    var sourceRange = sheets[i].getDataRange();

    var rows = sourceRange.getNumRows() - 1;
    var columns = sourceRange.getNumColumns();

    sourceRange = sheets[i].getRange(startRow, startColum, rows, columns);

    sourceRange.copyFormatToRange(sheets[0], 1, columns, rowIndex, rows);
    sourceRange.copyValuesToRange(sheets[0], 1, columns, rowIndex, rows);

    rowIndex += rows;
  }
}

循环的第一次传递效果很好,但是在第二次传递时它会出现服务器错误:

sourceRange.copyFormatToRange(sheets[0], 1, columns, rowIndex, rows);

错误没有提供任何信息。它只说:

  

SERVERERROR。请稍后再试......

你有什么想法吗?我知道我的范围是正确的,如果我在文档中只使用一张纸来尝试它,它就会很好用。我复制了工作表,然后将其重命名。这可能是个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要更改问题专栏

sourceRange.copyFormatToRange(sheets[0], 1, columns, rowIndex, rows);

sourceRange.copyValuesToRange(sheets[0], 1, columns, rowIndex, rowIndex+rows)

将rowIndex添加到行会为您提供目标范围的新结束行。当新数据添加到工作表[0]时,它必须更改为新的结束行。

需要对copyFormaToRange

进行相同的更改
sourceRange.copyFormatToRange(sheets[0], 1, columns, rowIndex, rowIndex+rows)