Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическое закрытие доступа к ячейкам. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Автоматическое закрытие доступа к ячейкам. (Макросы/Sub)
Автоматическое закрытие доступа к ячейкам.
Pozka Дата: Четверг, 02.03.2023, 09:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Добрый день. Заранее извиняюсь, если данная тема уже была где-то поднята, по крайней мере я не нашел.
Есть задача: Имеем документ таблица в гугл доке. К ней открыт доступ по ссылке всем. Требуется, чтоб ее могли редактировать только в определенное время.
Написал два небольших скрипта, один закрывает доступ к диапазону ячеек, другой к ним же открывает. У листа появляется, что этот диапазон защищен и только я могу редактировать информацию. Но по факту закрытый диапазон может редактировать кто угодно. Подскажите, что я делаю не так. Или другой способ это сделать.
Текст скриптов:[vba]
Код
/** @OnlyCurrentDoc */
function SetPotectionLD() {
var spreadsheet = SpreadsheetApp.getActive();
var range = spreadsheet.getRange('B2:Z95');
// @ts-ignore
var protection = range.protect().setDescription('Защита листа');
};

function RemPotectionLD() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B2:Z95').activate();
var allProtections = spreadsheet.getActiveSheet().getProtections(SpreadsheetApp.ProtectionType.RANGE);
var matchingProtections = allProtections.filter(function(existingProtection) {
return existingProtection.getRange().getA1Notation() == 'B2:Z95';
});
var protection = matchingProtections[0];
protection.remove();
};
[/vba]


Сообщение отредактировал Serge_007 - Четверг, 02.03.2023, 11:23
 
Ответить
СообщениеДобрый день. Заранее извиняюсь, если данная тема уже была где-то поднята, по крайней мере я не нашел.
Есть задача: Имеем документ таблица в гугл доке. К ней открыт доступ по ссылке всем. Требуется, чтоб ее могли редактировать только в определенное время.
Написал два небольших скрипта, один закрывает доступ к диапазону ячеек, другой к ним же открывает. У листа появляется, что этот диапазон защищен и только я могу редактировать информацию. Но по факту закрытый диапазон может редактировать кто угодно. Подскажите, что я делаю не так. Или другой способ это сделать.
Текст скриптов:[vba]
Код
/** @OnlyCurrentDoc */
function SetPotectionLD() {
var spreadsheet = SpreadsheetApp.getActive();
var range = spreadsheet.getRange('B2:Z95');
// @ts-ignore
var protection = range.protect().setDescription('Защита листа');
};

function RemPotectionLD() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B2:Z95').activate();
var allProtections = spreadsheet.getActiveSheet().getProtections(SpreadsheetApp.ProtectionType.RANGE);
var matchingProtections = allProtections.filter(function(existingProtection) {
return existingProtection.getRange().getA1Notation() == 'B2:Z95';
});
var protection = matchingProtections[0];
protection.remove();
};
[/vba]

Автор - Pozka
Дата добавления - 02.03.2023 в 09:45
Gustav Дата: Пятница, 03.03.2023, 15:31 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2356
Репутация: 961 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Здравствуйте! Попробуйте такую комбинацию, предварительно удалив вручную ранее созданные защиты для этого диапазона:
[vba]
Код
/** @OnlyCurrentDoc */

function removeProtection() {
    var spreadsheet = SpreadsheetApp.getActive();
    var allProtections = spreadsheet.getActiveSheet().getProtections(SpreadsheetApp.ProtectionType.RANGE);
    var matchingProtections = allProtections.filter(function(existingProtection) {
        return existingProtection.getDescription() == 'Защита Каро-Канн';
    });
    matchingProtections.forEach(function(protection) {
        protection.remove();
    });
};

function setProtection() {
    removeProtection();
    var spreadsheet = SpreadsheetApp.getActive();
    var range = spreadsheet.getRange('B2:Z95');
    var protection = range.protect();  
    protection.setDescription('Защита Каро-Канн');

    var me = Session.getEffectiveUser();  
    protection.addEditor(me);
    // ВАЖНО: removeEditors не удаляет ни владельца, ни исполнителя скрипта (меня)
    protection.removeEditors(protection.getEditors());
    if (protection.canDomainEdit()) {
        protection.setDomainEdit(false);
    }        
};
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЗдравствуйте! Попробуйте такую комбинацию, предварительно удалив вручную ранее созданные защиты для этого диапазона:
[vba]
Код
/** @OnlyCurrentDoc */

function removeProtection() {
    var spreadsheet = SpreadsheetApp.getActive();
    var allProtections = spreadsheet.getActiveSheet().getProtections(SpreadsheetApp.ProtectionType.RANGE);
    var matchingProtections = allProtections.filter(function(existingProtection) {
        return existingProtection.getDescription() == 'Защита Каро-Канн';
    });
    matchingProtections.forEach(function(protection) {
        protection.remove();
    });
};

function setProtection() {
    removeProtection();
    var spreadsheet = SpreadsheetApp.getActive();
    var range = spreadsheet.getRange('B2:Z95');
    var protection = range.protect();  
    protection.setDescription('Защита Каро-Канн');

    var me = Session.getEffectiveUser();  
    protection.addEditor(me);
    // ВАЖНО: removeEditors не удаляет ни владельца, ни исполнителя скрипта (меня)
    protection.removeEditors(protection.getEditors());
    if (protection.canDomainEdit()) {
        protection.setDomainEdit(false);
    }        
};
[/vba]

Автор - Gustav
Дата добавления - 03.03.2023 в 15:31
Pozka Дата: Среда, 15.03.2023, 14:40 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Спасибо, сработало.
 
Ответить
СообщениеСпасибо, сработало.

Автор - Pozka
Дата добавления - 15.03.2023 в 14:40
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Автоматическое закрытие доступа к ячейкам. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2023 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!