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

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

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

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

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

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

21 ответов

9 просмотров

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

Разделите задачу на части. 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" Вам надо достать координаты ячейки, в которой произошло редактирование и сравнить с адресом Вашей "запрещённой". Если они совпадают, то передаёте управление функции, которая возвращает функцию в ячейку. Но проще, ещё раз повторю, изменить структуру таблицы, чтобы ячейка с функцией не попадала в фильтр, и установить на неё стандартную защиту.

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта