Скрипты Google Sheet
Я создал следующий скрипт для сортировки данных на определенных страницах в листах Google, и он будет запускать только вторую функцию, а не первую. Я новичок в программировании и переходе на листы из Excel. Я уверен, что это что-то маленькое и очевидное, но я не могу понять это. Я ценю любую помощь.
function onEdit(event){
var sheet = event.source.getActiveSheet();
if(sheet.getName() ==='ADMIN')
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
var tableRange = "A2:G48"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
function onEdit(event){
var sheet = event.source.getActiveSheet();
if(sheet.getName() ==='HQ', 'ARMT', 'MAINT', 'AVNX', 'SHOPS')
var editedCell = sheet.getActiveCell();
var columnToSortBy = 2;
var tableRange = "A4:D40"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
1 ответ
В сценариях JavaScript и Google функции являются объектами. Здесь вы создаете объект (функция onEdit), а затем создаете его снова. Это похоже на установку переменной с именем xyz на 4, а затем на ту же переменную на 14. Последний набор - это все, что имеет значение. Вы можете достичь желаемого, объединяя функции вместе, чтобы у вас был один onEdit, или называли одно (или оба) по-разному и вызывали их с помощью onEdit.
function onEdit(event) {
first(event);
second(event);
}
function first(event) {
var sheet = event.source.getActiveSheet();
if (sheet.getName() === 'ADMIN')
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
var tableRange = "A2:G48"; // What to sort.
if (editedCell.getColumn() == columnToSortBy) {
var range = sheet.getRange(tableRange);
range.sort({
column: columnToSortBy,
ascending: true
});
}
}
function second(event) {
var sheet = event.source.getActiveSheet();
if (sheet.getName() === 'HQ', 'ARMT', 'MAINT', 'AVNX', 'SHOPS')
var editedCell = sheet.getActiveCell();
var columnToSortBy = 2;
var tableRange = "A4:D40"; // What to sort.
if (editedCell.getColumn() == columnToSortBy) {
var range = sheet.getRange(tableRange);
range.sort({
column: columnToSortBy,
ascending: true
});
}
}