2017-11-17 4 views
0

마스터 목록이라는 Google 스프레드 시트가 있습니다. 여기에는 '응답'과 '마스터 응답'이라는 두 개의 시트가 있습니다. 응답 시트에는 약 3000 행의 데이터가 있으며 '응답'시트의 첫 번째 열은 '응답'이라고합니다. '응답'시트의 행을 '마스터 응답'시트에 복사하고 싶습니다. 열에 'called'라는 값이 있으며 '응답'시트에 새 항목이 작성 될 때마다 적절한 데이터 행을 '마스터 응답'시트에 복사해야합니다. 현재 다음 코드를 사용하고 있지만 행이 '응답'시트에서 이동하여 복사되지 않습니다. 행이 '마스터 응답'시트에 복사되고 '응답'시트에 머물러 있어야하는 스크립트가 필요했습니다. 미리 감사드립니다.기준에 따라 한 시트에서 다른 시트로 데이터를 복사하는 스크립트

function onEdit() 
{ 
var sheetNameToWatch = "Response"; 
var columnNumberToWatch = 1; 
var valueToWatch = "Called"; 
var sheetNameToMoveTheRowTo = "Master Response"; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var range = sheet.getActiveCell(); 
if (sheet.getName() == sheetNameToWatch && range.getColumn() == 
columnNumberToWatch && range.getValue() == valueToWatch) 
{ 
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); 
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
sheet.getRange(2, 1, sheet.getLastRow(), 
sheet.getLastColumn()).moveTo(targetRange); 
} 
} 

답변

0

당신은 한 시트에서 다른 시트로 데이터를 복사 copyTo 대신 moveTo을 사용해야합니다.

sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).copyTo(targetRange); 

다른 스프레드 시트로 복사하려면.

var ss = SpreadsheetApp.openById("<<SPREADSHEET ID>>").getSheetByName("Sheet1"); 
var newTargetRange = ss.getRange(ss.getLastRow() + 1, 1); 
sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).copyTo(newTargetRange); 
+0

안녕하십니까. 답장을 보내 주셔서 감사합니다. 이 코드는 데이터를 복사 할 때 잘 작동합니다. 그러나 특정 행을 복사하는 대신 전체 시트를 복사합니다. 왜 이런 일이 일어나는지 알 수 없습니다. –

+0

범위에 따라 변경 ....'getRange (row, column, numRows, numColumns)'... 여기'sheet.getLastRow()'는 마지막 숫자를 줄 것입니다 – Ritz

+0

정말 고마워요. 코드가 잘 작동합니다. 이드에 의해 다른 워크 시트에 행을 복사하는 코드를 수정할 수 있습니까? 이제는 같은 통합 문서의 다른 시트와 다른 통합 문서의 시트에 결과를 복사하려고합니다. 나는 그것을 수정하려했지만 막혔다. –

관련 문제