У меня есть таблица со списком мотоциклетных туров.
Мне нужно назвать листы в соответствии с этим списком и переименовать листы, если список изменится. Имя листа будет объединением названия тура и индекса отправления.
Код ниже работает хорошо, за исключением случаев, когда есть 2 отправления идентичных туров, возникает следующее исключение:
' Лист с именем «XXX» уже существует. »
Если я переверну l oop (i--
вместо i++
), он будет работать.
I хотите изменить код на l oop в одном направлении, а затем, если возникнет исключение, l oop в другом направлении.
Изменить:
Итак, если у меня есть список туров:
Tour A 1, Tour B 1, Tour C 1, Tour A 2, Tour D 1, Tour E 1,
и я хочу изменить 'Tour B 1 'в другой экземпляр' Tour A '. Тогда «Тур В 1» изменится на «Тур А 2», а существующий «Тур А 2» изменится на «Тур А 3».
Зацикливание сверху, ошибка возникает, потому что «Тур В 1 'пытается перейти на' Tour A 2 ', в то время как исходный' Tour A 2 'все еще существует.
Однако, зацикливание снизу, это работает, потому что существующий' Tour A 2 'меняется на' Tour A 3 ', и к тому времени, когда l oop достигнет' Tour B 1 ', он может измениться на' Tour A 2 ', поскольку лист с таким именем больше не существует!
Надеюсь, это Чисто? Обратное верно, если имя листа изменяется в нижней части списка. A ++ l oop будет работать, но a - l oop не будет.
Поэтому я хотел бы попробовать ++ l oop, за которым следует - l oop if возникает ошибка ...
// Triggered by onEdit
function renameSheets() {
// Sets the sheet names to match season schedule
var tourNames = seasonScheduleTab.getRange('D5:D34').getValues();
var departures = seasonScheduleTab.getRange('C5:C34').getValues();
var sheets = ss.getSheets();
// I think I need an if statement above my for loop to change the loop to (var i = 30; i > 0; i --) if an exception occurs?
for (var i = 1; i < 31; i ++){
if (tourNames[i-1] !='') {
sheets[i].setName(tourNames[i-1] + ' ' + departures[i-1]);
}
}
}