这是我的脚本,当getRange为a1表示法,但当为行列表示法时,范围的最后一列被拉入第一列,并且数组中没有其他数据。 如果这是一个已知问题,如何以编程方式表示“ A6:M8”以包括行数。 //源代码行不起作用,我无法使其变得聪明!
function Copy() {
var lp=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LP").activate();
var sourceRows = lp.getLastRow();
var source = lp.getRange('A6:M8').getValues();
// var source = lp.getRange(6, 13, (sourceRows-5), 13).getValues();
var tr= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TR').activate();
var trRows = tr.getLastRow();
//var trput = lp.getRange('A234:M236').setValues(source);
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};
答案 0 :(得分:0)
假设工作表LP的最后一行是第8行,那么您对(sourceRows-5)
的计算应该可以。 (还假设您始终想一次复制3行。)
问题是您输入了13
作为范围的起始列。相反,该行应显示为
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
另外两个建议:
var ss = SpreadsheetApp.getActiveSpreadsheet();
activate()
调用,因此请考虑删除。 然后您将遇到类似这样的事情:
function Copy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var lp = ss.getSheetByName("LP");
var sourceRows = lp.getLastRow();
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
var tr= ss.getSheetByName("TR");
var trRows = tr.getLastRow();
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};