Google Script:如何将CopyRows从一个工作表复制到另一个工作表

时间:2013-07-01 21:13:58

标签: google-apps-script google-sheets

我正在尝试使用google sciprt将行从一个工作表复制到另一个spreadhsheet但是同样不起作用。

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

   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年7月1日

感谢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);

}


编辑:来自Multiples Sheets的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);

   }

如果有人有最好的方法。请放心了解。

最诚挚的问候,

1 个答案:

答案 0 :(得分: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);

}

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