Защита строк после ввода, когда лист предоставлен пользователям, не являющимся пользователями Google - PullRequest
0 голосов
/ 14 января 2019

Для планирования теннисных матчей мы создали лист, в котором 170 дуэтов могут заполнить свои имена. Этот лист доступен всем (поэтому вам даже не нужно иметь учетную запись Google) Однако мы ищем подходящий скрипт для защиты заполненных ячеек от возможных изменений.

В настоящее время защита устанавливается при редактировании ячейки. Но, к сожалению, защита не работает, если она заполнена незарегистрированным пользователем. Защита сделана, но не применена.

Кто может помочь нам настроить скрипт, чтобы один раз в день (например, в полночь) все заполненные ячейки были защищены кем-либо (с помощью триггера)

Я настроил копию , доступную для тех, кто может помочь.

function onEdit(e) {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var Sheet = ss.getSheetByName("PLANNING");
    var Range = Sheet.getActiveRange();
    var Row = Range.getRowIndex();

    var Reeks = Sheet.getRange("D"+ Row);

    if (Reeks.getValue() != "") {

        if (Reeks.getValue() != "FOUT") {

            Range.setNote('geboekt op: ' + new Date());

            var LockRange = Sheet.getRange(Row, 6, 1, 2);

            var protection = LockRange.protect().setDescription('Row ' + Row + ' Protected');

            protection.removeEditors(protection.getEditors());
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Я пытаюсь найти причину, по которой скрипт не работает. Настройка триггера, похоже, не работает в любом случае. Я думаю, что это связано с другими средствами защиты, которые возникают. Лист был первоначально защищен с ИСКЛЮЧЕНИЕМ определенного диапазона. Если сценарий хочет защитить строку в этом конкретном диапазоне, оба оператора идут друг против друга.

Я постараюсь выяснить это в ближайшие дни

0 голосов
/ 15 января 2019

Вместо простого триггера используйте устанавливаемый триггер.

  1. Измените имя вашей функции onEdit на другое, например protectOnEdit
  2. Добавьте устанавливаемый триггер для запуска protectOnEdit (или как вы назвали свою функцию)

Выше, потому что простая триггерная функция не может выполнять методы, требующие авторизации, такие как removeEditors

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...