В настоящее время я использую Google Sheets, чтобы люди могли регистрироваться на определенные временные смены. Я использую следующий скрипт для автоматической защиты ячеек после ввода данных, чтобы люди не могли дискретно стереть свои регистрации, не уведомив меня:
function onEdit(e) {
var range = e.range;
var timeZone = Session.getScriptTimeZone();
var stringDate = Utilities.formatDate(new Date(), timeZone, 'dd/MM/yy HH:mm');
var description = 'Protected on ' + stringDate;
var protection = range.protect().setDescription(description);
// below code taken directly from Google's documentation (second comment is my own):
// Ensure the current user is an editor before removing others. Otherwise, if the user's edit
// permission comes from a group, the script throws an exception upon removing the group.
var me = Session.getEffectiveUser();
//user who installed trigger
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
}
Проблема в том, что я работаю со многими сменами и людей, что делает очень трудным и утомительным удаление любых средств защиты в случае, если кто-то должен отменить по уважительным причинам (листы Google не предоставляют способ поиска по вашим защищенным диапазонам). Я понимаю логику написания сценариев c, но я очень неопытен, работая с ними. Я мог бы действительно использовать некоторую помощь, создавая что-то, что снимет все защиты в любой ячейке, с которой я очищаю данные.