从工作表到存档表的多页复印件

时间:2017-04-24 22:26:15

标签: google-apps-script named-ranges

我在这段代码的最后一行得到了一些帮助,它对于电子表格中的单张表格非常有效,但是我在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)
}

感谢您的帮助。非常感谢。

1 个答案:

答案 0 :(得分:1)

可以使用循环简化代码。

您在上面说过,您有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);
    }
}