我目前有一个脚本,用于将大量更改应用于多个电子表格
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [];
menuEntries.push({name: "Update Sheets", functionName: "updateSheets"});
ss.addMenu("Actions", menuEntries);
}
function ChangesAug1() {
var data = SpreadsheetApp.openById('XXX').getSheetByName('ListOfSheetsToBeUpadated').getDataRange().getValues();
for (var row = 2; row < data.length; row++ ) {
var spreadsheet = SpreadsheetApp.openById(data[row][0]).getSheetByName('Template');
我还有另外一个脚本,用来将范围从一个电子表格复制粘贴到另一个电子表格
var sss = SpreadsheetApp.openById('SourceID'); //replace with source ID
var ss = sss.getSheetByName('TemplateSheet'); //replace with source Sheet tab name
var range = ss.getRange('A1:EJ5'); //assign the range you want to copy
var data = range.getValues();
var tss = SpreadsheetApp.openById('DestID'); //replace with destination ID
var ts = tss.getSheetByName('DestSheet'); //replace with dest
ts.getRange(ts.getLastRow()+1, 1,5,140).setValues(data); //you will need to define the size of the copied data see getRange()ination Sheet tab name
你知道我如何组合这两个脚本来批量应用从一张图纸到一张图纸列表的复制范围吗?
感谢您的回复:)
发布于 2020-09-11 18:30:31
您应该只创建一个函数,用于将所需的数据从一个工作表复制到另一个工作表,然后在访问正在使用的for
循环中的工作表时调用此函数。
因此,您可以使用类似以下内容:
function copyFromOneSheetToAnother(var sourceSheet,
var destinationSheet) {
var range = sourceSheet.getRange('A1:EJ5');
var data = range.getValues();
destinationSheet.getRange(ts.getLastRow() + 1, 1, 5, 140).setValues(data);
}
上面的函数需要两个参数:sourceSheet
和destinationSheet
。至于调用这个函数,你可以使用下面的代码:
function ChangesAug1() {
var data = SpreadsheetApp.openById('XXX').getSheetByName('ListOfSheetsToBeUpadated').getDataRange().getValues();
for (var row = 2; row < data.length; row++) {
var spreadsheet = SpreadsheetApp.openById(data[row][0]).getSheetByName('Template');
//get THE_DESTINATION_SHEET as well
copyFromOneSheetToAnother(spreadsheet, THE_DESTINATION_SHEET);
}
}
参考文献
https://stackoverflow.com/questions/63838939
复制相似问题