169 похожих чатов

Не могу понять как написать скрипт, который не будет давать

возможности вписать какое либо значение в таблицу

Нашел только такой, но он работает по кнопке и удаляет все, а мне нужно чтобы только нельзя было вписать значение, но формулу чтобы не удалял

function clearCells() {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Просчет заказа").setActiveSelection("A7:A");
SpreadsheetApp.getActiveRange().clearContent();

можете подсказать как это сделать??🙏🙏🙏

21 ответов

12 просмотров

Как вариат, вы делаете копии формул, стирете все, потом вставляете только формулы.

Разделите задачу на части. 1. Один скрипт готовит данные в таблицу, это могут быть данные, а могут быть формулы. 2. Второй скрипт, следит, чтобы данные никто не изменил, например следит за onEdit. 3. Скрипты могут общаться между собой. 4. Если кто-то, что- то меняет, идет команда первому скрипту, вернуть старое значение в ячейку или диапазон. Это не готовое решение и даже не алгоритм. Это идея, котору надо реализовать, решив кучу побочных проблем. ) Щас эксперты скажут свое веское слово - реально это или нет. )

Alexander Ivanov
onEdit не панацея.

Да, п.2. может оказаться нерешаемой задачей. По сути, в таблицах не реализовано нормальное управление доступом, и поэтому упс ... )

Alexⁿ
Разделите задачу на части. 1. Один скрипт готовит ...

А 3 пункт разве возможен? Скрипты могут общаться между собой? Один другой может конечно вызвать, но передать что то в скрипт вызванный событием насколько понимаю концепцию - нет?

Запрет скриптом сделать нельзя. Нет такой функции. Но Вы можете настроить триггер, который просто будет возвращать формулу в ту ячейку, вот и всё. Но ещё лучше пересмотреть архитектуру проекта. Наверняка можно сделать так, чтобы не возникало надобности что-то запрещать скриптами.

Павел Костылюк
И передать тоже может.

Могу попросить какой то пример или ссылку на статью, поизучать? Моя гипотеза - через переменные окружения?

Евгений-Князев Автор вопроса
Павел Костылюк
Запрет скриптом сделать нельзя. Нет такой функции....

получилось сделать атоматическое очищение таблицы, если вводится какое то значение function onEdit(e) { SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Техн.").setActiveSelection("A2:AF"); SpreadsheetApp.getActiveRange().clearContent(); } а как сделать чтобы не вся таблица стиралась а именно та ячейка в которую вписали информацию? и еще вопрос написал скрипт для импортрендж, но ее нужно вручную запускать и если кто то ее удаляет, то нужно заново запускать ее, как можно сделать чтобы она автоматически запускалась и работала постоянно? с помощью тригера или еще есть какие то варианты? function importprice() { const ss=SpreadsheetApp.getActiveSpreadsheet(); const ws=ss.getSheetByName("Техн.") ws.getRange("A1").setFormula('=IMPORTRANGE("1S8foWY0UwtFhyquz_-Z3q760P4roMZkWlBCmyVlgbRI";"Товари!B1:Al10")'); }

Евгений Князев
получилось сделать атоматическое очищение таблицы,...

Прочитайте про объект е что передается в триггер

Евгений Князев
получилось сделать атоматическое очищение таблицы,...

а зачем постоянно вставлять одну и туже формулу?

Евгений Князев
получилось сделать атоматическое очищение таблицы,...

Из параметра "e" Вам надо достать координаты ячейки, в которой произошло редактирование и сравнить с адресом Вашей "запрещённой". Если они совпадают, то передаёте управление функции, которая возвращает функцию в ячейку. Но проще, ещё раз повторю, изменить структуру таблицы, чтобы ячейка с функцией не попадала в фильтр, и установить на неё стандартную защиту.

Евгений-Князев Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта