2015-10-26 178 views
0

我创建了一个调度模板的存档功能Google Apps脚本getLastRow错误(

我得到了它通过下面的代码工作:

// https://developers.google.com/apps-script/reference/spreadsheet/range 
function copySchedule2() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var source = ss.getSheets()[3]; 
    var destination = ss.getSheets()[4]; 

    var range = source.getRange("A1:X64"); 

    range.copyFormatToRange(destination, 1, 26, 1, 64); 
    range.copyValuesToRange(destination, 1, 26, 1, 64); 
} 

然而,由于这是一个持续的。存档,我想每个星期安排添加到先前的存档的底部,我试图验证码:

function copySchedule() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var source = ss.getSheets()[3]; 
    var destination = ss.getSheets()[4]; 
    var range = source.getRange("A1:X64"); 

    source.getRange("A:X").copyTo(destination.getRange(destination.getLastRow()+1)); 

} 

但我发现了一个错误:

[15-10-26 17:24:28:093 EDT] Starting execution 
[15-10-26 17:24:28:099 EDT] SpreadsheetApp.getActiveSpreadsheet() [0 seconds] 
[15-10-26 17:24:28:191 EDT] Spreadsheet.getSheets() [0.092 seconds] 
[15-10-26 17:24:28:193 EDT] Spreadsheet.getSheets() [0.001 seconds] 
[15-10-26 17:24:28:243 EDT] Sheet.getRange([A1:X64]) [0.049 seconds] 
[15-10-26 17:24:28:302 EDT] Execution failed: Cannot convert function FindRows() { destinationRange = SpreadhseetApp.getActiveSpreadsheet().getSheets()[4].getLastRow(); return destinationRange; } 1 to (class). (line 36, file "Copy v0.5") [0.146 seconds total runtime] 

我是JS的新手,所以也许有人可以指点我正确的方向。我错过了什么?

回答

0

copyTo()需要对单元格的引用来知道它应该粘贴数据的位置。你只是给它的行号,因为getLastRow()返回一个数字。

尝试追加,1告诉它在A列中开始粘贴:

source.getRange("A:X").copyTo(destination.getRange(destination.getLastRow()+1, 1)); 
+0

谢谢主席先生。快速的问题 - 有没有更好的资源,然后谷歌文档?我觉得他们的例子有点欠缺。 – Bardworx

+1

尽管没有尽兴,但我发现这个参考对个人而言是相当不错的。我觉得,如果你了解JS并掌握电子表格的概念,表格,范围和属性,一切都将落实到位。不幸的是,这里没有太多的资源,两本书和一个[基于捐赠的](https://leanpub.com/googlespreadsheetprogramming),我个人觉得它很缺乏,并且比基本的谷歌教程中的丰富的复制品更多。 –