Спасибо за подробный разбор! Подскажите пожалуйста есть ли идеи как реализовать зависимые всплывающие списки с запоминанием данных (выборка данных) для каждой конкретной строчки ячеек. у нас таблица где совместно работает сразу 4 сотрудника и пока кто-то будет заполнять данные, есть высокая вероятность что кто-то сделает изменения и выборка будет сформирована не корректно.
Здравствуйте! Очень интересный вопрос! Вообще, эта проблема имеет своё специальное название - "проблема гонки", и давно и успешно решена в базах данных. В принципе, я мог бы попытаться что-то подобное организовать и в Google Spreadsheet, но здесь существуют проблема низкого быстродействия системы. Поэтому, боюсь, что даже после изменение прав доступа к редактируемой строке, всё равно будет возможна ситуация, когда уже выполненное редактирование одного пользователя может быть отменено другим пользователем, вошедшим в систему на мгновение раньше первого. Хотя, разумеется, таких ситуаций будет существенно меньше, чем в системе без какой-либо регулировки доступа (то есть не так часто, как сейчас).
Пожалуй, более надёжным решением было бы сделать отдельный рабочий лист для каждого пользователя, а потом, с помощью скрипта, переносить все эти изменения в общий лист.
@@IT4eachcom Смотри мой комментарий выше, я тебе описал, как решить эту проблему. Здесь вариант, лишенный описанного недостатка docs.google.com/spreadsheets/d/1xORWXsElNIEsjXqc-Pwick6C2oYivx55vVk0JavNgMY/edit#gid=1049760343
Идея действительно хороша. Но в этом конкретном примере она поможет решить проблему только в том случае, если все четверо будут корректировать уже созданные ранее строки. И то, при условии, что это будут РАЗНЫЕ строки. Но если все четверо начнут заполнять одну и ту же строку (старую или новую - не важно), то результат будет непредсказуемым.
@@IT4eachcom Не согласен. К каждому элементу первого списка четко соответствует набор данных из второго. Поэтому совершенно не важно, кто будет его редактировать. Просто запустится несколько простых триггеров, каждый из которых наполнит второй выпадающий список в соседней ячейке. Но наполнят они этот список идентичными данными
Здравствуйте, огромное спасибо за такие подробные видео!! Нужна небольшая помощь/совет, у меня выпадающий список не зависимый, но очень-очень длинный, так как это список населенных городов по стране, и там больше 20 000 строк. В связи с этим таблица на моменте выбора значения из списка очень глючит и долго думает. Могли бы подсказать каким образом лучше работать с настолько большими массивами данных, чтобы значения подтягивались быстрее и не приходилось по несколько раз обновлять таблицу? Буду невероятно Вам благодарен за помощь!!!
Здравствуйте, Евгений! Прежде всего спасибо за приятую обратную связь) По Вашему вопросу: электронные таблицы хороши только для небольших объёмов данных и малого числа пользователей. Однако, чем объёмнее данные и чем сложнее иерархия прав пользователей, тем дольше и хуже всё это работает на электронных таблицах. Универсальное решение с прицелом дальнейшее развитие - использовать базу данных (БД). Какую именно БД и как с ней взаимодействовать (какой интерфейс для этого использовать) зависит от специфики задачи и личных предпочтений Заказчика. Так что, если готовы к переменам, то с удовольствием могу Вам в этом помочь)
Если данные в строке были занесены и после этого меняется значение ячейки из первого или второго столбца, то правильней будет очистить значение остальных зависимых ячеек.
АБСОЛЮТНО согласен с Вами! Просто для первого раза и так получилось слишком много - (34 минуты). В следующем видео это обязательно будет доработано. И не только это!
Добрый день! Пожалуйста, подскажите, можно ли сделать так, чтобы ячейка зависела от двух умных таблиц. Т.е, пример: в ячейке В2 можно выбрать товар из умного списка А, только, при условии, что в ячейке Е3 выбрано определенное значение из умного списка Б.
Тоже очень интересно.. Можно ли можно ли сделать так, чтобы выпадающий список формировался из колонки другого листа, но при условии, что в других строках того же листа стоят определенные значения? Т.е. использовать формулы с условиями для формирования списка выбора? Ф-ия ЕСЛИ или TEXTJOIN не работают. В случае TEXTJOIN было бы удобно подгрузить данные в "значения из списка" через запятую из массива при выполнении условия соответствия :(
Здравствуйте. Вопрос. Как сделать чтобы гугл не показывал над предыдущими значениями столбцов B и C красные треугольники с ошибками о несоответствии значений условиям?
Здравствуйте! Просто смотрите дальше! В следующих видео есть очень простое и эффективное решение этой проблемы: отказ от ссылок и замена их массивами в формулах валидации!
Здравствуйте! Очевидно Вы где-то ошиблись. Могу предложить 3 варианта решения: 1.) Сразу же перейти на более продвинутый скрипт из следующего видео, где программа САМА всё сделает за Вас: ua-cam.com/video/e3xRFKOojyQ/v-deo.html Там надо всего лишь: - аккуратно скопипастить код; - не ошибиться с именем листа с данными *Data* ; - выбрать один пункт в пользовательском меню 2.) Внимательно проверить имена листов, формулы и сам скрипт в том варианте, который Вы используете сейчас. А ещё лучше просто пере-создать весь файл заново. 3.) Прислать мне на почту it4each.com@gmail.com ссылку на файл с ошибкой. (последний вариант предполагает оплату)
Была та же ошибка. Важно, чтобы номера столбцов основного листа Home совпадали с номерами вспомогательных столбцов Data, Data_2. Потому как этот номер мы определяем как раз из главного, а во вспомогательных ЭТОТ и следующий номер используем
Подскажите пожалуйста как сделать так чтобы при вводе в ячейку текстового значения в другой ячейке автоматически появлялось число которое ему соответствует ? Например при вводе называния товара в другой ячейке появлялась его цена.
Сейчас новая версия скрипта там не работает, нашел что можно включить старую но запускаю выдает ошибку TypeError: Cannot read property 'range' of undefined (строка 3, файл Code) Вкладки три с названиями как у вас. Проверка данных первый столбец на "Data" второй и третий на "Data_2" все равно дает ошибку, помогите пожалуйста
Ошибка говорит о попытке извлечь данные с неизвестного листа. Проверьте, что главный лист действительно называется 'Home'. PS Если не поможет - попробуйте просто отладить код. Вот видео, где рассказывается, как это сделать: ua-cam.com/video/z3rZElfaRjQ/v-deo.html
Здравствуйте! Очень странное сообщение об ошибке. Я с таким никогда раньше не сталкивался. Скажите, а Вы точно имеете радакторские права для работы с этим гугл-документом и пытаетесть открыть редактор в браузере, на странице документа из главного меню как Tools --> Script Editor (Инструменты --> Редактор Скриптов)?
Здравствуйте! Выдает такую ошибку: TypeError: Cannot read properties of undefined (reading 'range') При запуске функции onEdit И такую ошибку Exception: The parameters (number,null) don't match the method signature for SpreadsheetApp.Sheet.getRange. При запуске функции function fillColumn
Здравствуйте! Скорее всего ошибка вызвана неверным указанием имени листа. Попробуйте отдебажить этот код. Здесь подробная инструкция, как это сделать ua-cam.com/video/z3rZElfaRjQ/v-deo.html
Не знаю. Я несколько лет тому назад совсем отказался от Excel. И переписал все свои программы, что были на VBA на Apps Script. Здесь больше возможностей, лучше огранизована многопользовательская работа, ты всегда работаешь в самой последней версии, причём делаешь это совершенно бесплатно. Плюс - Windows есть далеко не у всех. А значит, файл с которым ты поделился будет открыт с графическими искажениеми (иногда весьма существенными). А если, не дай бог, там ещё и макросы, то тогда уж точно этой файл нельзя будет запустить в другом месте. А гугл таблицы работают везде, включая мобильный телефон. К тому же 2010 офис - довольно-таки старый релиз. Даже в 16-м (последний, с которым работал) уже добавилось много чего нового. Переходите на Гугл spreadsheet - не пожалеете. Если надо, могу помочь с доработкой и переносом действующих таблиц!
Проверьте имя листа, на котором находятся данные. Если .getLastRow() выдаёт null, то скорее всего скрипт просто не нашёл нужного листа. В предыдущей строке кода его имя указано, как "Data": var sd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); Соответственно, имя листа промежуточных данных должно быть "Data_2": var sd_2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data_2"); А имя главного листа должно быть "Home": if(list_name=="Home") { В идеале (если опять появится ошибка) хорошо бы скопировать эти имена прямо из скрипта (Ctrl + C) и вставить их в названия листов (Ctrl + V). Тогда больше вероятность, что не будет ошибки ни в одном имени. (Или наоборот, имена листов вставьте в соответствующие места кода. Все эти места уже перечислены в этом комментарии) Кстати код одинаково хорошо работает и в старой версии и в новой (V8), поэтому ошибка точно не по этой причине.
Здравствуйте! Есть готовое решение для тех, кто не очень уверенно себя чувствует со скриптами: ua-cam.com/video/MtVOiyODpv0/v-deo.html Здесь подробно расписано, что где взять и куда вставить, чтобы всё работало и без оглядки на скрипты!
Здравствуйте! Боюсь, что всё же чего-то не учли. Есть более продвинутая верия, которая содержит в себе проверку некоторых наиболее частых ошибок: ua-cam.com/video/MtVOiyODpv0/v-deo.html Плюс - в ней вообще ничего не надо настраивать: все формулы и листы создаются автоматическа!
Здравствуйте! Ну да, некоторые навыки программирования здесь нужны, иначе логику действий кода понять действительно сложно. Но есть вариант: в следующих видео показывается, как (и где именно) можно взять готовый скрипт и вставить его в свою таблицу.
Автор красава !
Спасибо большое за информацию и текст скрипта
И Вам спасибо за обратную связь!
Спасибо за подробный разбор! Подскажите пожалуйста есть ли идеи как реализовать зависимые всплывающие списки с запоминанием данных (выборка данных) для каждой конкретной строчки ячеек. у нас таблица где совместно работает сразу 4 сотрудника и пока кто-то будет заполнять данные, есть высокая вероятность что кто-то сделает изменения и выборка будет сформирована не корректно.
Здравствуйте! Очень интересный вопрос!
Вообще, эта проблема имеет своё специальное название - "проблема гонки", и давно и успешно решена в базах данных.
В принципе, я мог бы попытаться что-то подобное организовать и в Google Spreadsheet, но здесь существуют проблема низкого быстродействия системы. Поэтому, боюсь, что даже после изменение прав доступа к редактируемой строке, всё равно будет возможна ситуация, когда уже выполненное редактирование одного пользователя может быть отменено другим пользователем, вошедшим в систему на мгновение раньше первого. Хотя, разумеется, таких ситуаций будет существенно меньше, чем в системе без какой-либо регулировки доступа (то есть не так часто, как сейчас).
Пожалуй, более надёжным решением было бы сделать отдельный рабочий лист для каждого пользователя, а потом, с помощью скрипта, переносить все эти изменения в общий лист.
@@IT4eachcom Смотри мой комментарий выше, я тебе описал, как решить эту проблему.
Здесь вариант, лишенный описанного недостатка
docs.google.com/spreadsheets/d/1xORWXsElNIEsjXqc-Pwick6C2oYivx55vVk0JavNgMY/edit#gid=1049760343
Идея действительно хороша.
Но в этом конкретном примере она поможет решить проблему только в том случае, если все четверо будут корректировать уже созданные ранее строки. И то, при условии, что это будут РАЗНЫЕ строки.
Но если все четверо начнут заполнять одну и ту же строку (старую или новую - не важно), то результат будет непредсказуемым.
@@IT4eachcom Не согласен. К каждому элементу первого списка четко соответствует набор данных из второго. Поэтому совершенно не важно, кто будет его редактировать. Просто запустится несколько простых триггеров, каждый из которых наполнит второй выпадающий список в соседней ячейке. Но наполнят они этот список идентичными данными
Здравствуйте, огромное спасибо за такие подробные видео!!
Нужна небольшая помощь/совет, у меня выпадающий список не зависимый, но очень-очень длинный, так как это список населенных городов по стране, и там больше 20 000 строк.
В связи с этим таблица на моменте выбора значения из списка очень глючит и долго думает.
Могли бы подсказать каким образом лучше работать с настолько большими массивами данных, чтобы значения подтягивались быстрее и не приходилось по несколько раз обновлять таблицу?
Буду невероятно Вам благодарен за помощь!!!
Здравствуйте, Евгений!
Прежде всего спасибо за приятую обратную связь)
По Вашему вопросу: электронные таблицы хороши только для небольших объёмов данных и малого числа пользователей. Однако, чем объёмнее данные и чем сложнее иерархия прав пользователей, тем дольше и хуже всё это работает на электронных таблицах.
Универсальное решение с прицелом дальнейшее развитие - использовать базу данных (БД).
Какую именно БД и как с ней взаимодействовать (какой интерфейс для этого использовать) зависит от специфики задачи и личных предпочтений Заказчика.
Так что, если готовы к переменам, то с удовольствием могу Вам в этом помочь)
Если данные в строке были занесены и после этого меняется значение ячейки из первого или второго столбца, то правильней будет очистить значение остальных зависимых ячеек.
АБСОЛЮТНО согласен с Вами!
Просто для первого раза и так получилось слишком много - (34 минуты).
В следующем видео это обязательно будет доработано.
И не только это!
Добрый день!
Пожалуйста, подскажите, можно ли сделать так, чтобы ячейка зависела от двух умных таблиц. Т.е, пример: в ячейке В2 можно выбрать товар из умного списка А, только, при условии, что в ячейке Е3 выбрано определенное значение из умного списка Б.
Тоже очень интересно.. Можно ли можно ли сделать так, чтобы выпадающий список формировался из колонки другого листа, но при условии, что в других строках того же листа стоят определенные значения? Т.е. использовать формулы с условиями для формирования списка выбора?
Ф-ия ЕСЛИ или TEXTJOIN не работают. В случае TEXTJOIN было бы удобно подгрузить данные в "значения из списка" через запятую из массива при выполнении условия соответствия :(
Здравствуйте!
Разумеется, это возможно!
Здравствуйте. Вопрос. Как сделать чтобы гугл не показывал над предыдущими значениями столбцов B и C красные треугольники с ошибками о несоответствии значений условиям?
Здравствуйте!
Просто смотрите дальше!
В следующих видео есть очень простое и эффективное решение этой проблемы: отказ от ссылок и замена их массивами в формулах валидации!
на третьей строчке
col = e.range.getColumn();
выдаёт ошибку "Cannot read property 'range' of undefined (строка 3, файл Код)"
Что это может быть?
Здравствуйте!
Очевидно Вы где-то ошиблись. Могу предложить 3 варианта решения:
1.) Сразу же перейти на более продвинутый скрипт из следующего видео, где программа САМА всё сделает за Вас: ua-cam.com/video/e3xRFKOojyQ/v-deo.html
Там надо всего лишь:
- аккуратно скопипастить код;
- не ошибиться с именем листа с данными *Data* ;
- выбрать один пункт в пользовательском меню
2.) Внимательно проверить имена листов, формулы и сам скрипт в том варианте, который Вы используете сейчас. А ещё лучше просто пере-создать весь файл заново.
3.) Прислать мне на почту it4each.com@gmail.com ссылку на файл с ошибкой.
(последний вариант предполагает оплату)
@@IT4eachcom напишу в личку
@@IT4eachcom вообще из следующего видео тоже все делали. Все листы правильно названы.
даже таблица создается по нужному методу, а вот первый метон onedit не работает
Была та же ошибка. Важно, чтобы номера столбцов основного листа Home совпадали с номерами вспомогательных столбцов Data, Data_2. Потому как этот номер мы определяем как раз из главного, а во вспомогательных ЭТОТ и следующий номер используем
Добрий день! Подскажите почему нет редактора скриптов в инструментах?
Здравствуйте!
В новой версии редактор вынесен в Extentions (Расширения)
Подскажите пожалуйста как сделать так чтобы при вводе в ячейку текстового значения в другой ячейке автоматически появлялось число которое ему соответствует ? Например при вводе называния товара в другой ячейке появлялась его цена.
Здравствуйте! Можно написать для этого специальный скрипт. Только хотелось бы сначала понять чем плох вариант, о котором рассказывается в этом видео?
Сейчас новая версия скрипта там не работает, нашел что можно включить старую но запускаю выдает ошибку
TypeError: Cannot read property 'range' of undefined (строка 3, файл Code)
Вкладки три с названиями как у вас.
Проверка данных первый столбец на "Data" второй и третий на "Data_2" все равно дает ошибку, помогите пожалуйста
Ошибка говорит о попытке извлечь данные с неизвестного листа.
Проверьте, что главный лист действительно называется 'Home'.
PS
Если не поможет - попробуйте просто отладить код. Вот видео, где рассказывается, как это сделать: ua-cam.com/video/z3rZElfaRjQ/v-deo.html
Такая же проблема, ничего не помогло
Здравствуйте!
Тогда рекомендую попробовать более продвинутую версию: ua-cam.com/video/MtVOiyODpv0/v-deo.html
Доброго дня, не могу открыть "редактор скриптов" : Не удалось открыть файл.
Проверьте правильность адреса и повторите попытку.
Здравствуйте!
Очень странное сообщение об ошибке. Я с таким никогда раньше не сталкивался.
Скажите, а Вы точно имеете радакторские права для работы с этим гугл-документом и пытаетесть открыть редактор в браузере, на странице документа из главного меню как Tools --> Script Editor (Инструменты --> Редактор Скриптов)?
Здравствуйте!
Выдает такую ошибку: TypeError: Cannot read properties of undefined (reading 'range')
При запуске функции onEdit
И такую ошибку Exception: The parameters (number,null) don't match the method signature for SpreadsheetApp.Sheet.getRange.
При запуске функции function fillColumn
Здравствуйте!
Скорее всего ошибка вызвана неверным указанием имени листа.
Попробуйте отдебажить этот код.
Здесь подробная инструкция, как это сделать ua-cam.com/video/z3rZElfaRjQ/v-deo.html
@@IT4eachcom Здравствуйте. Проблема точно не в имени листов. Отладка кода не помогла. Какие могут быть ещё варианты?
Простите, что значит "отладка кода не помогла"?
Бесконечно зависимые списки в обычном 2010 Excel возможно так же настроить ??
Не знаю. Я несколько лет тому назад совсем отказался от Excel. И переписал все свои программы, что были на VBA на Apps Script.
Здесь больше возможностей, лучше огранизована многопользовательская работа, ты всегда работаешь в самой последней версии, причём делаешь это совершенно бесплатно.
Плюс - Windows есть далеко не у всех. А значит, файл с которым ты поделился будет открыт с графическими искажениеми (иногда весьма существенными). А если, не дай бог, там ещё и макросы, то тогда уж точно этой файл нельзя будет запустить в другом месте. А гугл таблицы работают везде, включая мобильный телефон.
К тому же 2010 офис - довольно-таки старый релиз. Даже в 16-м (последний, с которым работал) уже добавилось много чего нового.
Переходите на Гугл spreadsheet - не пожалеете.
Если надо, могу помочь с доработкой и переносом действующих таблиц!
Выскакивает ошибка в 9-й строке! - TypeError: Cannot read property 'getLastRow' of null (рядок 9, файл "Code")
Проверьте имя листа, на котором находятся данные. Если .getLastRow() выдаёт null, то скорее всего скрипт просто не нашёл нужного листа. В предыдущей строке кода его имя указано, как "Data":
var sd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
Соответственно, имя листа промежуточных данных должно быть "Data_2":
var sd_2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data_2");
А имя главного листа должно быть "Home":
if(list_name=="Home") {
В идеале (если опять появится ошибка) хорошо бы скопировать эти имена прямо из скрипта (Ctrl + C) и вставить их в названия листов (Ctrl + V). Тогда больше вероятность, что не будет ошибки ни в одном имени. (Или наоборот, имена листов вставьте в соответствующие места кода. Все эти места уже перечислены в этом комментарии)
Кстати код одинаково хорошо работает и в старой версии и в новой (V8), поэтому ошибка точно не по этой причине.
@@IT4eachcom Пушечка! Все получилось! Спасибо!!!!
Еще очень нужно второе видео, потому что перемешиваются значения((
ОООчень ждууууу!!! + 1000000 лайков
Отлично!
А можно то же самое, но без работы со скриптами.
Здравствуйте!
Есть готовое решение для тех, кто не очень уверенно себя чувствует со скриптами: ua-cam.com/video/MtVOiyODpv0/v-deo.html
Здесь подробно расписано, что где взять и куда вставить, чтобы всё работало и без оглядки на скрипты!
1 в 1 всё повторил, не работает ничего.
Здравствуйте!
Боюсь, что всё же чего-то не учли.
Есть более продвинутая верия, которая содержит в себе проверку некоторых наиболее частых ошибок: ua-cam.com/video/MtVOiyODpv0/v-deo.html
Плюс - в ней вообще ничего не надо настраивать: все формулы и листы создаются автоматическа!
Не думал, что это может быть так сложно. Сдался на 19 минуте. Не понимаю, это я такой тупой, или это видео сугубо для профессиональных программистов?
Здравствуйте!
Ну да, некоторые навыки программирования здесь нужны, иначе логику действий кода понять действительно сложно.
Но есть вариант: в следующих видео показывается, как (и где именно) можно взять готовый скрипт и вставить его в свою таблицу.
только запутал чем обьяснил
Жаль.. А с какого момента стало непонятно?