在我的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。请稍后再试......
你有什么想法吗?我知道我的范围是正确的,如果我在文档中只使用一张纸来尝试它,它就会很好用。我复制了工作表,然后将其重命名。这可能是个问题吗?
答案 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)