Я делюсь набором документов Google Sheet с другими пользователями.Я являюсь владельцем всех таблиц, и они размещены на моем Google Диске.Каждый пользователь имеет свой собственный выделенный лист.Пользователи должны иметь возможность запускать на своем листе сценарии, которые собирают и обрабатывают данные с листа, а это значит, что лист должен быть незащищенным во время выполнения сценариев.Однако в конце сценария я хочу снова защитить лист, чтобы пользователь, выполняющий сценарий, не мог редактировать защищенные ячейки после завершения выполнения сценария.
Я могу легко удалитьзащиты с листа в начале скрипта, но я не могу снова защитить лист с помощью скрипта без того, чтобы пользователь, выполняющий скрипт, был указан в качестве редактора.Я попытался использовать функцию «removeEditors» безрезультатно (базовый пример для одного из защищенных диапазонов см. Ниже).
var userEmail = Session.getActiveUser().getEmail();
var protection = newPickSheet.getRange('A1:M3').protect();
protection.removeEditor(userEmail);
Для справки, вот код, который я использую в началесценария для удаления всех защит:
var protections = newPickSheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for(var i = 0; i < protections.length; i++){
protections[i].remove();
}
Подводя итог, мне нужен мой сценарий для:
- Снятие всех защит
- Выполнение основной частиscript
- Повторно добавьте все средства защиты, чтобы только я, владелец листа, но НЕ пользователь, выполняющий сценарий, имел возможность редактирования.
Мне удалось очень легко добиться этого с помощью VBA при развертывании макросов Excel, но, похоже, с помощью скриптов приложений это не так просто.
Если кто-нибудь может помочь мне найти решение, оно будет очень признательно.