возможности вписать какое либо значение в таблицу
Нашел только такой, но он работает по кнопке и удаляет все, а мне нужно чтобы только нельзя было вписать значение, но формулу чтобы не удалял
function clearCells() {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Просчет заказа").setActiveSelection("A7:A");
SpreadsheetApp.getActiveRange().clearContent();
можете подсказать как это сделать??🙏🙏🙏
Как вариат, вы делаете копии формул, стирете все, потом вставляете только формулы.
Разделите задачу на части. 1. Один скрипт готовит данные в таблицу, это могут быть данные, а могут быть формулы. 2. Второй скрипт, следит, чтобы данные никто не изменил, например следит за onEdit. 3. Скрипты могут общаться между собой. 4. Если кто-то, что- то меняет, идет команда первому скрипту, вернуть старое значение в ячейку или диапазон. Это не готовое решение и даже не алгоритм. Это идея, котору надо реализовать, решив кучу побочных проблем. ) Щас эксперты скажут свое веское слово - реально это или нет. )
onEdit не панацея.
Да, п.2. может оказаться нерешаемой задачей. По сути, в таблицах не реализовано нормальное управление доступом, и поэтому упс ... )
А 3 пункт разве возможен? Скрипты могут общаться между собой? Один другой может конечно вызвать, но передать что то в скрипт вызванный событием насколько понимаю концепцию - нет?
Запрет скриптом сделать нельзя. Нет такой функции. Но Вы можете настроить триггер, который просто будет возвращать формулу в ту ячейку, вот и всё. Но ещё лучше пересмотреть архитектуру проекта. Наверняка можно сделать так, чтобы не возникало надобности что-то запрещать скриптами.
И передать тоже может.
Могу попросить какой то пример или ссылку на статью, поизучать? Моя гипотеза - через переменные окружения?
https://developers.google.com/apps-script/guides/properties?hl=en
получилось сделать атоматическое очищение таблицы, если вводится какое то значение 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" Вам надо достать координаты ячейки, в которой произошло редактирование и сравнить с адресом Вашей "запрещённой". Если они совпадают, то передаёте управление функции, которая возвращает функцию в ячейку. Но проще, ещё раз повторю, изменить структуру таблицы, чтобы ячейка с функцией не попадала в фильтр, и установить на неё стандартную защиту.
Понял, большое спасибо!!
var row = e.range.getRow(); var col = e.range.getColumn();
🙏 Спасибо огромное!!!)
Обсуждают сегодня