У меня есть электронная таблица с несколькими листами для проектов.Каждый лист представляет собой более широкую категорию проекта или «ведро».Я хотел бы иметь обзорный лист, который автоматически заполняет имена проектов и сегментов при добавлении нового проекта в список сегментов.Я думаю, что я довольно близок к достижению этого, но мой текущий код добавляется на лист обзора, когда редактирование объединяет ячейки или удаляет содержимое (поэтому пустые проекты добавляются в обзор).Было бы замечательно, если бы имя проекта добавлялось в Overview только тогда, когда ячейка начиналась пусто до редактирования.Было бы идеально, если бы редактирование существующего проекта могло изменить этот проект в Overview (если это можно сделать, это требует больше размышлений, и я могу сделать это позже. Сейчас мне просто нужно игнорировать его, когда событие объединяет или удаляет содержимое).).
Если есть возможность указать разные события, думаю, я мог бы просто добавить больше операторов или условий, чтобы исключить слияние или удаление.Это было бы полезным исправлением.Если возможно связать исходную ячейку и последнюю ячейку для имени проекта, так что редактирование исходной ячейки проекта изменит окончательную ячейку проекта, и наоборот, это было бы удивительно!
Вот мой текущийкод:
function onEdit(event) {
var spreadsheet = SpreadsheetApp.getActive();
var originTab = event.source.getActiveSheet();
if(originTab.getName() != 'Overview' & originTab.getName() != 'Braindump'){
var originCell = originTab.getActiveCell();
if(originCell.getColumn() == 1){
var projectName = originCell.getValue();
var bucketName = originTab.getName();
var finalTab = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Overview'));
var newRow = finalTab.getLastRow() + 1;
finalTab.getRange("A" + newRow).setValue(bucketName);
finalTab.getRange("B" + newRow).setValue(projectName);
}
}
}
Этот код отлично выполняет добавление проектов на лист обзора, но также добавляет пустые проекты (все еще с именем сегмента), когда редактирование объединяет или удаляет содержимое ячейки.
Редактировать: я сделал исправление, которое работает для меня, но я все еще хотел бы некоторый вклад, если кто-нибудь знает лучший способ!Я просто установил удаление строки «Обзор», если ячейка с именем проекта пуста.Итак, самый новый код:
function onEdit(event) {
var spreadsheet = SpreadsheetApp.getActive();
var originTab = event.source.getActiveSheet();
var originTabName = originTab.getName()
if(originTabName != 'Overview' & originTabName != 'Braindump'){
var originCell = originTab.getActiveCell();
if(originCell.getColumn() == 1){
var projectName = originCell.getValue();
var bucketName = originTab.getName();
var finalTab = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Overview'));
var newRow = finalTab.getLastRow() + 1;
finalTab.getRange("A" + newRow).setValue(bucketName);
finalTab.getRange("B" + newRow).setValue(projectName);
if(finalTab.getRange("B" + newRow).getValue() == ''){
finalTab.deleteRow(newRow);
}
}
}
spreadsheet.setActiveSheet(spreadsheet.getSheetByName(originTabName));
}