Не проверено - но это может дать некоторое представление.
Основное отличие состоит в том, чтобы проверять имена листов, НЕ совпадающие с вашими перечисленными листами, тогда все остальные листы должны иметь копию, только содержимое.
function myFunction() {
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
for(var s in allsheets){
var sheet = allsheets[s];
if(sheet.getSheetName() != "Base Data" || sheet.getSheetName() != "Template") {
var thissheet = ss.getSheetbyName(sheet.getSheetName());
var lR = thissheet.getLastRow();
var LC = thissheet.getLastColumn();
var range = thissheet.getRange(1,1,LR,LC);
range.copyTo(range, {contentsOnly: true});
}
}
}
ОБНОВЛЕНИЕ: Следующий скрипт был протестирован и работает в соответствии с ожиданиями ОП. Листы «Базовые данные» и «Шаблон» исключены из метода copyTo
.
Следует отметить несколько моментов:
- Оператор
if
объединяет тест для«Базовые данные» и «Шаблон» с И вместо ИЛИ. Необходимая логика состоит в том, чтобы установить, что текущее имя листа не является ни одним из названных листов. И имеет эффект рассмотрения этого в целом;ИЛИ позволяет позволить одному или другому быть правдой, но не приводит к выполнению условия, при котором оба они являются истинными. - Я допустил ошибку, включив
getSheetbyName()
. В этом не было необходимости, поскольку цикл уже создал контекст для листа.
function so5850593801() {
// setup spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get all the sheets
var allsheets = ss.getSheets();
// loop through the sheets
for(var s in allsheets){
var sheet = allsheets[s];
var sheetname = sheet.getSheetName();
// don't process Base data or Template
if(sheetname !== "Base Data" && sheetname !== "Template") {
var LR = sheet.getLastRow();
var LC = sheet.getLastColumn();
var range = sheet.getRange(1,1,LR,LC);
range.copyTo(range, {contentsOnly: true});
}
}
}