2017-04-24 8 views
0

이 코드의 마지막 줄과 관련하여 도움이되었지만 스프레드 시트의 단일 시트에 대해 완벽하게 작동하지만 From 스프레드 시트에 5 시트가 있고 동일한 5 개가 있습니다 대상 스프레드 시트의 시트 다른 4 개의 시트에서 같은 범위를 대상 시트의 동일한 이름을 가진 상대에게 가져올 수 있습니까? 그래서 각 시트를 해당 이름을 가진 파일로 복사하려고 시도했지만 아래 코드를 설정했지만 첫 번째 시트 만 가져 오는 대신 전체 코드에 대해 원래 스프레드 시트 ID를 한 번만 입력하면됩니다. 각 시트 섹션에서?작업 시트에서 보관 시트로 다중 시트 복사

function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('AM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('AM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('PM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('PM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('Pool/Beach'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('Pool/Beach'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('Night Dive'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('Night Dive'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 
} 

도움 주셔서 감사합니다. 매우 감사.

답변

0

루프를 사용하여 코드를 단순화 할 수 있습니다.

당신은 5 장이 있지만 코드 샘플에 4 개 밖에 없다고 말하면 다른 시트 이름을 var sheetNames에 추가하십시오.

function onOpen() { // This function adds a custom menu to the spreadsheet (Backup to archive) so you can run the script from there. 

var ui = SpreadsheetApp.getUi(); 

    ui.createMenu('Backup to archive') 
    .addItem('Backup', 'dataBackup') 
    .addToUi(); 
} 

function dataBackup() { 

    var inputSS = SpreadsheetApp.openById('1wglM4-5jx873vwtFRPVgC1qk27JjrsYjDwp0fNpl5Xg'); // The file ID of the Input sheet 
    var archiveSS = SpreadsheetApp.openById('146WU8RghfFqlCpCSX7n6kBAKOyxcpVKt14yhVfvYz-g'); // The file ID of the archive sheet 

    // The names of the sheets to be copied. 
    // NOTE: These names must match the names of the sheets in BOTH spreadsheets i.e. the same case the spelling and the same spaces. 
    var sheetNames = ['AM trip', 'PM trip', 'Pool/Beach', 'Night Dive']; 

    for (var i = 0; i < sheetNames.length; i++) { // Loop to each sheet listed in 'var sheetNames' and copy the data. 

     var inputSheet = inputSS.getSheetByName(sheetNames[i]); 
     var archiveSheet = archiveSS.getSheetByName(sheetNames[i]); 

     var data = inputSheet.getRange('B7:U38').getValues(); 

     archiveSheet.getRange(archiveSheet.getLastRow() + 1, 2, data.length, data[0].length).setValues(data); 
    } 
} 
+0

정리해 주셔서 감사합니다. 나는 목록에있는 것처럼 지금은 단지 4 페이지 만 몇 가지를 변경했습니다. 스크립트를 실행하지만 첫 페이지 AM Trip 만 복사합니다. 다른 페이지는 복사되지 않으며 데이터를 확인하기 위해 일부를 붙여 넣었습니다. 또한 "var i = 0 ......"선을 설명하는 곳을 설명하거나 가리킬 수 있습니까? 고맙습니다. 검색을 시도했지만 설명 만 찾을 수는 없습니다. – Paul

+0

@Paul, 스크립트가 작동하지 않는 이유를 모르겠습니다. 시트 이름이 맞지 않을 수도 있습니다. 이 2 장을보십시오. 입력 시트에는 스크립트와이를 호출하는 사용자 정의 메뉴가 있습니다. [입력 시트] (http://gg.gg/4iork) 및 [아카이브 시트] (http://gg.gg/4iorj). 'var i = 0'은 for 루프 [https://www.w3schools.com/js/js_loop_for.asp]의 카운터입니다. IMO,이 스크립트는 당신이 필요로하는 것에 이상적이지 않습니다. 저에게 연락하십시오 : jamesd at nairongschool.com –