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

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

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

27 ответов

24 просмотра

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

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) :)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта