我试图获得一个具有特定范围的行,以便在文本结束后复制到该行中。我几天前就开始工作,但现在无法弄清楚我哪里出错了。
到目前为止,我有:
function getNextRow();
return SpreadsheetApp.getActiveSpreadsheet().getLastRow()+1;
}
function test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange('a4:e4')
var data = range.getValues();
var nextrow = getNextRow();
ss.getRange(nextrow).setValues(data);
}
我尝试过copyto,但似乎无法再从谷歌开发者的页面中弄清楚了。感谢任何帮助,谢谢!
答案 0 :(得分:0)
首先,您从不指定您正在使用的表。该脚本应该处理哪个电子表格表?使用getActiveSheet
选择活动的,或getSheetByName
选择特定的工作表。
此外,您的函数getNextRow
返回一个整数,它是所有数据下面的第一行的编号。到现在为止还挺好。但是你打电话给ss.getRange(nextrow)
,其中nextrow就是整数...不好。这不是使用此方法的acceptable ways之一:它需要A1表示法,或单行单元的(行,列)整数对,或者(行,列,行数,数字)对于一个以上单元格的范围,四倍)。这是你拥有的,所以使用
ss.getRange(nextrow, 1, data.length, data[0].length).setValues(data);
这表示:从行nextrow
第1列(意思是A)开始,选择与data
相同大小的范围。对data.length, data[0].length
是获取data
数组的高度和宽度的方式。
也就是说,使用appendRow
方法可以更轻松地实现您的目标。这是一个替代所有代码的函数:
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('a4:e4')
var data = range.getValues();
sheet.appendRow(data[0]);
}
这会将活动工作表中A4:E4的内容附加到同一工作表的底部。方法appendRow
采用一维数组,因此data[0]
而不仅仅是data
(二维)。