如何使用行,列表示法将值获取到数组中

时间:2018-07-03 09:08:26

标签: google-apps-script

这是我的脚本,当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);
};

1 个答案:

答案 0 :(得分:0)

假设工作表LP的最后一行是第8行,那么您对(sourceRows-5)的计算应该可以。 (还假设您始终想一次复制3行。)

问题是您输入了13作为范围的起始列。相反,该行应显示为

var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();

另外两个建议:

  1. 您两次获得活动电子表格。将其放入变量中,因此您无需这样做。 var ss = SpreadsheetApp.getActiveSpreadsheet();
  2. 似乎不需要在各个工作表上进行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);
};