Я видел, что вам удалось решить вашу проблему с добавлением строки.
Прежде всего, использование электронных таблиц в качестве базы данных - не лучшая идея, есть несколько сервисов, которые подходят лучше. Даже в экосистеме Google:
Но говоря что вы по какой-то причине хотите придерживаться электронных таблиц. Вам следует попытаться иметь более модульный код, поскольку сейчас все выглядит очень запутанным, и наличие трех вложенных for-l oop также не помогает с эффективностью.
При поиске идентификатора в столбце вы должны использовать класс TextFinder
, это будет намного быстрее, чем повторение по нему.
Это позволило бы избавиться от 1 для l oop, но, конечно, есть хороший шанс, что два других также можно пропустить, используя TextFinder
, так как это своего рода работа.
Это изменение ускорит ваш код и, что более важно, упростит его понимание и понимание. Вы также можете сделать каждый l oop функцией, например, checkingForId()
, checkingForRow()
, updateCell()
, et c.
Также кажется, что вы объявляете переменные более одного раза . Я не уверен, что это вызовет какие-то ошибки, но точно сбивает с толку. Попробуйте объявить переменные только один раз. Например:
if(rowIndex < 0){
s1.getRange(lastRow+1, headerIdColumn+1).setValue(idValue)
var dataRangeSeason = s1.getDataRange().getValues();
var lastRow = s1.getLastRow();
}
Здесь вам не нужно использовать ключевое слово var
, поскольку две переменные (dataRangeSeason
и lastRow
) уже были объявлены ранее. Добавление var
просто приведет в замешательство других людей (или даже вас в будущем), смотрящих на этот код.
Более того, весь этот блок может быть преобразован в функцию для ясности.
Хотя я пытался дать вам несколько подсказок, учтите, что переполнение стека - не место для публикации вашего кода за то, что он "проверил" или улучшил. Для этой цели существует еще одна страница стека под названием Code Review .