1

XML 피드의 데이터를 가져 오는 시트가 있습니다. 그런 다음 특정 시트의 내용을 기반으로 한 시트를 다른 시트로 나누어 쓸 스크립트를 작성했습니다. 이 모든 것이 잘 작동합니다.Google Apps Script를 사용하여 값 및 형식을 다른 Google 스프레드 시트로 복사

내 문제는 XML에서 데이터를 가져 와서 새 시트로 분할하기 전에 일부 열을 추가하고 형식을 지정하는 등의 작업을하는 것입니다. 그런 다음 appendRow()를 사용하여 행을 복사하면 새 시트, 서식 및 수식이 손실됩니다.

내가 현재 사용하고 코드입니다 : 내가 무엇을 찾고 할 수있는 방법은

var datarange = template_sheet.getDataRange(); 

for (var i in dataRange) { 
    workbook.getSheetByName(dataRange[i][6]).appendRow(dataRange[i]); 

} 

있습니까? 또는 원본 데이터를 별도의 시트로 분할 한 다음 각 시트를 반복하고 서식/공식을 수행해야합니까?

답변

3

Range 객체의 copyTo (range, optAdvancedArgs) 메서드를 사용해야합니다.

var datarange = template_sheet.getDataRange(); 
for (var i in datarange) 
    datarange[i].copyTo(
    workbook.getSheetByName(dataRange[i][6]).getRange(
     workbook.getSheetByName(dataRange[i][6]).getMaxRows()+1, 1)); 

트릭보다 읽기에

수행해야합니다

var datarange = template_sheet.getDataRange(); 
for (var i in datarange) { 
    var sheet = workbook.getSheetByName(dataRange[i][6].getValue()); 
    datarange[i].copyTo(sheet.getRange(sheet.getMaxRows()+1, 1)); 
} 
+0

씨야의 해당 솔루션의 유일한 문제는 각 행을 통해 열 6의 값을 찾아 적절한 시트로 복사해야한다는 것입니다. 아니면 copyTo가 appendTo와 똑같이 작동한다고 말하면서 formating과 formula 만 복사합니까? – nathangiesbrecht

+1

각 개별 행이 잠재적으로 다른 시트로 이동하는 경우 각 행을 루핑하는 것을 피할 수는 없습니다. 스 니펫도이를 수행하고 있습니다 .--) 스크립트의 읽기 쉬운 버전을 추가했습니다. copyTo가 appendRow와 다른 기능을 수행하므로 [link] (https://developers.google.com/apps-script/class_range#copyTo)에서 살펴보십시오. getMaxRows()를 사용하여 첫 번째 빈 행을 찾아야합니다. @nathangiesbrecht – Taras

+0

완벽한! 감사! – nathangiesbrecht

1

복사 하나 개의 탭에서 새 탭으로 서식 설정 값 탭 :

function copyTab() { 
    var ss, sourceSheet, sourceData, sourceDataRange, newSheetTab; 

    ss = SpreadsheetApp.getActiveSpreadsheet();//Get active spreadsheet 

    sourceSheet = ss.getSheetByName("Sheet1");//Get the source sheet tab 
    newSheetTab = ss.insertSheet("New Sheet");//Create a new sheet tab 

    sourceDataRange = sourceSheet.getDataRange(); 

    sourceDataRange.copyTo(newSheetTab.getRange(1, 1));//Copies the data from a range of 
    //cells to another range of cells. By default both the values and formatting are copied 

} 
관련 문제