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

Вариант только остается - на каждое изменение в ячейках запрашивать

у пользователя его идентификатор (или любой признак)?

27 ответов

20 просмотров

Можно заставить пользователя запустить функцию, которая от его имени заведет триггер и, например, разрешит редактирование нужного ему диапазона. Тогда этот триггер будет выполняться для каждого пользователя, но данные о пользователе будут передаваться только в тот, который им и установлен. Можно проверять аргумент "е" на наличие этих данных и прекращать выполнение функции. Дичайший костыль с неизвестными побочками, но как вариант - имеет право на существование.

Stanislav-S Автор вопроса
Dmitriy
Можно заставить пользователя запустить функцию, ко...

У каждого пользователя, открывшего книгу и запустившего функцию (через скриптом созданное меню) будет свой экземпляр тригера? В функции надо проверять на наличие такого триггера (что бы не создавать их при каждом запуске)?

Stanislav-S Автор вопроса
Stanislav S
У каждого пользователя, открывшего книгу и запусти...

Запрашиваете список триггеров у каждого пользователя и если он есть в списке то он есть. Триггеры других пользователей уму не видны.

Stanislav-S Автор вопроса
Доброслав Владимир Васильевич (MisterVova)
Запрашиваете список триггеров у каждого пользовате...

Уже попробовал. Проблема появилась: у каждого пользователя отрабатывают все экземпляры всех пользователей.

Stanislav S
Уже попробовал. Проблема появилась: у каждого поль...

Напиши простой триггер который выводит почту пользователя и время старта скрипта.

Stanislav-S Автор вопроса
Stanislav S
Понял. е.еMail будет пустым у остальных

Если вы свой onEdit пишите то все будут запускаться от всех пользователей.

Stanislav-S Автор вопроса
Доброслав Владимир Васильевич (MisterVova)
Если вы свой onEdit пишите то все будут запускатьс...

Или надо именно простой тригер использовать? Но его же я не могу для каждого пользователя сделать уникальным?

Stanislav-S Автор вопроса
Dmitriy
Можно заставить пользователя запустить функцию, ко...

Скрипт на взведение триггера на скору руку получился такой: function createTrigger() { let sTrigName="fгScript"; let fTrigOn=false; let ss = SpreadsheetApp.getActiveSpreadsheet(); let triggers = ScriptApp.getProjectTriggers(); Logger.log('Current project has ' + triggers.length + ' triggers.'); triggers.forEach(trigger => {if(trigger.getHandlerFunction()===sTrigName)fTrigOn=true}) if (!fTrigOn) ScriptApp .newTrigger(sTrigName) .forSpreadsheet(ss) //или forForm, forCalendar, forDocument .onEdit() //или onChange(), onOpen(), onFormSubmit() .create() } Подкорректируете для красоты?

Stanislav S
Скрипт на взведение триггера на скору руку получил...

function createTrigger() { let sTrigName="fuScript"; let fTrigOn=false; let ss = SpreadsheetApp.getActiveSpreadsheet(); let triggers = ScriptApp.getProjectTriggers(); Logger.log('Current project has ' + triggers.length + ' triggers.'); triggers.forEach(trigger => {if(trigger.getHandlerFunction()===sTrigName)fTrigOn=true}) if (!fTrigOn) ScriptApp .newTrigger(sTrigName) .forSpreadsheet(ss) //или forForm, forCalendar, forDocument .onEdit() //или onChange(), onOpen(), onFormSubmit() .create() }

Все нормально. Непривычно. Как я вижу 👆

Alexander Ivanov
screenshot Все нормально. Непривычно. Как я вижу 👆

С отступом в два пробела выглядит как в исходном сообщении в телеге😉

Stanislav-S Автор вопроса

const? или var привычнее? Просто let - более строга!?

Stanislav S
const? или var привычнее? Просто let - более стро...

🤷‍♂️ Не знаю. Я все еще размышляю. Но везде использую const как гарантию конкретного использования. let в циклах, если сильно надо. var только в apps script и то если редактирую чужое.

Stanislav-S Автор вопроса
Alexander Ivanov
🤷‍♂️ Не знаю. Я все еще размышляю. Но везде исполь...

Тогда конечно - я в конце, под завершение проекта меняю на const, там где точно не собираюсь менять внутри функции.

Stanislav S
Скрипт на взведение триггера на скору руку получил...

fTrigOn= triggers.some(trigger => trigger.getHandlerFunction()===sTrigName);

Stanislav-S Автор вопроса
Доброслав Владимир Васильевич (MisterVova)
Если вы свой onEdit пишите то все будут запускатьс...

А вот с этим проблема. Все триггеры запускаются у всех редакторов и let sUserEmail = e.user.getEmail() не пустой. Содержит мыло автора триггера. Есть идеи как исправить?

Stanislav S
А вот с этим проблема. Все триггеры запускаются у ...

идей нет, есть только каждому свой лист или своя таблица, а от туда уже собирать информацию в общую,

Stanislav-S Автор вопроса
Stanislav S
А вот с этим проблема. Все триггеры запускаются у ...

А нет, все получилось. Спасибо, кто верил (в меня :) и в google) :)

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

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

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
Карта сайта