将增量数据从一个选项卡复制/粘贴到另一个选项卡

时间:2016-01-08 23:44:48

标签: google-apps-script google-sheets

我的编码经验很少,但通常可以通过查看示例来拼凑解决方案。这一次无法使其工作或在我的技能范围内找到解析的例子。

基本上我想从标签1复制数据并将其放在标签2上的运行数据下面,但仅限于标签1上有数据要复制。

我开始使用以下功能,但不检查可用数据,或者改变捕获的数据范围的大小,以便运行并粘贴大量空白。

   function CopyRows() {
    var source = SpreadsheetApp.openById('key');
    var sourcesheet = source.getSheetByName('ImportPage');
    var target = SpreadsheetApp.openById('key')
    var targetsheet = target.getSheetByName('TargetPage');
    var targetrange = targetsheet.getRange(targetsheet.getLastRow() + 1 , 1);
    sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).copyTo(targetrange);}

我认为我需要添加的是一种改变捕获数据范围的方法,如果没有数据则停止该功能。

我通过importrange函数从另一张表中获取数据。通过脚本完成整个事情可能会更好,但现在这部分工作得很好。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

这可能有效:

function CopyRows() {
  var source = SpreadsheetApp.openById('key');
  var sourcesheet = source.getSheetByName('ImportPage');

  var target = SpreadsheetApp.openById('key')
  var targetsheet = target.getSheetByName('TargetPage');
  var lastRowOfTrgtSheet = targetsheet.getLastRow(); 

  var srcData = sourcesheet
      .getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn())
      .getValues();
  targetsheet.getRange(lastRowOfTrgtSheet+1, 1, srcData.length, srcData[0].length)
      .setValues(srcData);

};

它使用setValues()方法而不是copyTo()

如果您想使用copyTo(),则需要使用带有4个参数的getRange()版本,并从源表格中的行长度中减去1:< / p>

function CopyRows() {
  var source = SpreadsheetApp.openById('key');
  var sourcesheet = source.getSheetByName('ImportPage');

  var target = SpreadsheetApp.openById('key')
  var targetsheet = target.getSheetByName('TargetPage');
  var lastRowOfTrgtSheet = targetsheet.getLastRow(); 
  var srcLastRw = sourcesheet.getLastRow();

  var targetrange = targetsheet
      .getRange(lastRowOfTrgtSheet + 1, 1, srcLastRw-1, sourcesheet.getLastColumn());

  sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn())
    .copyTo(targetrange);
};