2013-07-01 7 views
0

google sciprt를 사용하여 시트를 다른 스프레드 시트로 복사하려고하지만 동일한 기능이 작동하지 않습니다.Google Script : 한 시트에서 다른 스프레드 시트로 행을 복사하는 방법

제발 내가 도와 줄 수있는 방법이나 나에게 설명해 주시겠습니까?

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

    } 

어쨌든 다른 스프레드 시트의 한 시트에서 다른 시트로 행을 복사하는 것이 있는지 알고 있습니까?

안부


편집 : PhysLabTsar이 스크립트는 다른 스프레드 시트 한 장에서 copyrows 매우 잘 작동 2013년 1월 7일

감사합니다. 배수 시트

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

    } 

사람이 그것을 할 수있는 가장 좋은 방법이 있으면

에서 CopyRows :

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

}


편집 할 수 있습니다. letme에게 알려주십시오.

안부,

답변

2

나는 당신의 문제는 copyTo() 방법입니다 생각합니다. 대상이 같은 스프레드 시트에있는 경우에만 작동합니다. 이 문제를 해결하려면 스프레드 시트에서 원하는 범위를 잡고 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); 

} 

난이 도움이되기를 바랍니다 : 여기에

작동합니다 무언가이다. 이것은이 곳에서의 첫 번째 답변이므로 다른 누군가가 알고있는 더 나은 방법이 있다고 확신합니다. 그러나 그것은 제가 사용해온 방법입니다. :)

+0

'setValues ​​()'메소드를 사용한 후에'final' 스프레드 시트에서 값을 오프셋 할 수 있습니다. 중요한 부분은'final' range 나'targetrange'의 차원이'rangeValues'의 차원과 일치해야한다는 것입니다. – PhysLabTsar

+0

고마워요. 너무 많이 ... 지금은 일하고 있습니다 .... 어떻게이 자료를 여러 장의 시트로 얻을 수 있습니까? 나는 시트 1을 시트 1, 시트 2를 시트 2, 시트 3을 시트 3 ... –

+0

감사합니다 .... 다중 시트에서 복사하는 방법을 찾았습니다 –

관련 문제