1

我正在尝试使用 google sciprt 将行从一张表复制到另一张电子表格,但同样不起作用。

请你能帮助我或解释我如何做到这一点?

   function CopyRows() {
    var source = SpreadsheetApp.openById('XXXXXX');
    var sourcesheet = source.getSheetByName('sheet1');

    var target = SpreadsheetApp.openById('YYYYY')
    var targetsheet = target.getSheetByName('sheet1');
    var targetrange = targetsheet.getRange(targetsheet.getLastRow() + 1 , 1);
    sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).copyTo(targetrange);

   }

您是否知道是否存在将行从一张表复制到另一张电子表格中的另一张表?

最好的祝福


编辑:2013 年 1 月 7 日

感谢 PhysLabTsar ,您的脚本非常适合从一张纸到另一张电子表格的复制行。

   function myFunction() {
     var source = SpreadsheetApp.openById('xxxxxx');
       var sourcesheet = source.getSheetByName('sheet1');

       var target = SpreadsheetApp.openById('xxxxx')
       var targetsheet = target.getSheetByName('sheet1');
var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
       var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
       targetrange.setValues(rangeValues);

}


编辑:来自多张表的 CopyRows

   function ShellCopyValues(){
     var sheets = ['sheet1','sheet2','sheet3','sheet4','sheet4'];
     for (var s in sheets){
   CopyRows(sheets[s]);
     }
   }

   function CopyRows(uname) {
     var source = SpreadsheetApp.openById('XXXXXX');
       var sourcesheet = source.getSheetByName(uname);

       var target = SpreadsheetApp.openById('YYYYYY')
       var targetsheet = target.getSheetByName(uname);
       var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
       var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
       targetrange.setValues(rangeValues);

   }

如果有人有最好的方法来做到这一点。请随时让我知道。

最好的祝福,

4

1 回答 1

3

我相信你的问题是copyTo()方法。这仅在目标位于同一个电子表格中时才有效。要解决此问题,您可以从initial电子表格中获取所需的范围getValues()并将它们存储在对象ARRAY中。然后打开您的final电子表格并获取相同的大小范围并用于setValues()转储它们。范围的大小final必须与范围的大小相匹配initial

这是应该起作用的东西:

function myFunction() {
  var source = SpreadsheetApp.openById('xxxxxx');
    var sourcesheet = source.getSheetByName('sheet1');

    var target = SpreadsheetApp.openById('xxxxx')
    var targetsheet = target.getSheetByName('sheet1');
    var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
    var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
    targetrange.setValues(rangeValues);

}

我希望这有帮助。这是我在这个地方的第一个答案,所以我确信有其他人知道的更好的方法。但这是我一直在使用的方式。:)

于 2013-07-01T22:44:09.697 回答