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

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

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

27 ответов

4 просмотра

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

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() }

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

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

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

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

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

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

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

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

Тогда конечно - я в конце, под завершение проекта меняю на 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) :)

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
10
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Изменение типа с SomeException на String и правда удобней @cheese_hs . А вот такой вариант насколько некрасив еще? loadConfigDB :: IO (Either String ConfigDataBase) loadConfi...
Camara
7
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта