Google Scripts copyto问题

时间:2016-12-20 03:49:57

标签: google-apps-script

我试图获得一个具有特定范围的行,以便在文本结束后复制到该行中。我几天前就开始工作,但现在无法弄清楚我哪里出错了。

到目前为止,我有:

    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,但似乎无法再从谷歌开发者的页面中弄清楚了。感谢任何帮助,谢谢!

1 个答案:

答案 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(二维)。