У нас есть скрипт Google, который отлично работает для одного подлиста (имя подлиста — Candy), но как мы можем запустить его для всех других подлистов, другое имя подлиста — Лено, Сэм, Гнито, Парам, Нинг
Во всех ячейках подлиста в ячейке D37 мы поместили фильтр, через который мы получаем значение в ячейке D37: M41, теперь мы хотим преобразовать его в «Формула в значение».
Код
function CopyValue() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Candy'), true);
spreadsheet.getRange('D37').activate();
spreadsheet.getRange('D37:M41').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D37:M41').activate();
spreadsheet.getActiveRangeList().setFontSize(10)
.setFontFamily(null)
.clearFormat()
.setHorizontalAlignment('center')
.setVerticalAlignment('middle');
spreadsheet.getRange('D37:D41').activate();
spreadsheet.getRange('D37').activate();
}
for
или forEach
Ниже я демонстрирую ваш код, адаптированный с помощью forEach
// This function copies and pastes the ranges.
function copyRanges(sheet) {
// Copy pasting your code here:
sheet.getRange("D37").activate();
sheet
.getRange("D37:M41")
.copyTo(
sheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_VALUES,
false
);
sheet.getRange("D37:M41").activate();
sheet
.getActiveRangeList()
.clearFormat()
.setHorizontalAlignment("center")
.setVerticalAlignment("middle");
}
// This function selects the sheets.
function updateSheets(sheetArray = null) {
var spreadsheet = SpreadsheetApp.getActive();
let sheets = spreadsheet.getSheets();
if (sheetArray != null) {
sheets = sheets.filter((sheet) => {
let name = sheet.getName();
return sheetArray.includes(name);
});
}
sheets.forEach((sheet) => {
updateSheet(sheet);
});
}
// RUN THIS FUNCTION
function main() {
let sheetArray = ["Leno", "Gnito", "Ning"]; // Update with sheets you want to update.
updateSheets(sheetArray);
// To update all sheets call this instead
// updateSheets();
}
Я подчистил, как мне показалось, некоторые избыточные части вашего кода.
Предлагается прекратить использовать активные диапазоны, операции копирования и вставки и начать использовать getValue getValues и setValue setValues . Они намного быстрее, надежнее и гибче.
Спасибо, iansedano, можем ли мы сделать это на выбранном подлисте, предположим, у нас есть 5 подлистов с именами 1. Leno 2. Sam 3. Gnito 4. Param 5. Ning, и мы запустим приведенный выше код для Leno, Gnito, Ning.