Вот моя проблема.Я создаю несколько листов в общем документе электронной таблицы.Это по ссылке.Идея состоит в том, чтобы заблокировать всех, кроме владельца таблицы.Все диапазоны, которые должны быть заблокированы, были заблокированы следующим кодом: range.protect().setDescription("Locked");
Все остальные диапазоны (которые могут быть изменены кем-либо) оставлены без вызова protect()
для них.Поэтому я использовал примеры на Класс защиты и пришел с этим кодом, который я запускал в режиме отладки как владелец:
let rangeProtect = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (let i = 0; i < rangeProtect.length; i++) {
let protection = rangeProtect[i];
if (protection.canEdit() && (protection.getDescription() == "Locked")) {
let editors = ss.getEditors();
for (let j = 0; j < editors.length; j++) {
ss.removeEditor(editors[j]);
}
// Add only owner
ss.addEditor(ownerEmail);
}
}
К сожалению, это не работает.Каждый человек, который использует ссылку, все еще может редактировать все.Но если я вручную изменю каждый защищенный диапазон с именем «заблокировано» на «только владелец», это сработает ...
Так что вы можете сказать мне, что я делаю неправильно?
Я пыталсятакже этот подход:
let protection = sheet.protect().setDescription('Locked');
let unprotected = sheet.getRange("B1:C10");
protection.setUnprotectedRanges([unprotected]);
Проблема остается той же:
- Если я настрою общую ссылку на «Просмотр», я не смогу ничего изменить, несмотря на вызов
setUnprotectedRanges()
.Все заблокировано. - Если я настрою общую ссылку на «Редактировать», я вижу, что лист заблокирован правильно, за исключением этого диапазона (как видно при открытии «защищенных диапазонов и листов» из меню «Данные»).) но все же все, кто использует ссылку, могут изменить что-либо на листе.
Я борюсь с этой проблемой уже несколько дней, и у меня заканчивается идея.
Я действительноперепробовал много вещей.Так что, если вы знаете, как это сделать правильно, не могли бы вы дать пример рабочего кода / пример общего документа для этого?Допустим,
- Создание двух диапазонов с описанием «Заблокировано» (например, «Первая строка и первый столбец»)
- Установка правильной защиты для «Заблокированных» диапазонов (только для редакции владельца)
- Любой, у кого есть ссылка, может изменять все диапазоны, кроме заблокированных
- Использование общего документа по ссылке
Любая помощь будет принята с благодарностью!Действительно!
Примечание. Этот код написан на Typescript, потому что я использую CLASP для преобразования всего в код скрипта Google Apps.