Google Apps Script – это мощный инструмент, который позволяет автоматизировать задачи, расширять функциональные возможности и повышать удобство использования Google Таблиц. Одним из общих требований является защита определенных диапазонов в электронной таблице от редактирования пользователями. В этой статье блога мы рассмотрим различные методы достижения этой цели, используя разговорный язык, и предоставим примеры кода, которые упростят вам реализацию. Итак, приступим!
Метод 1. Использование триггера onEdit.
Самый простой способ защитить диапазон, когда пользователь его редактирует, — использовать триггер onEdit. Этот триггер срабатывает всякий раз, когда редактируется какая-либо ячейка в электронной таблице. Мы можем написать функцию, которая проверяет, находится ли редактируемая ячейка в защищенном диапазоне, и отменяет изменение, если это так.
function onEdit(e) {
var protectedRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange('A1:B5');
var editedRange = e.range;
if (editedRange.getSheet().getName() === protectedRange.getSheet().getName() &&
editedRange.getRow() >= protectedRange.getRow() &&
editedRange.getRow() <= protectedRange.getLastRow() &&
editedRange.getColumn() >= protectedRange.getColumn() &&
editedRange.getColumn() <= protectedRange.getLastColumn()) {
// Revert the change
e.range.setValue(e.oldValue);
}
}
Метод 2. Использование проверки данных.
Другой подход заключается в использовании правил проверки данных. Мы можем настроить собственное правило проверки данных для защищенного диапазона, которое позволяет вводить только определенные значения или формулы. Это не позволяет пользователям изменять диапазон каким-либо другим способом.
function protectRangeWithDataValidation() {
var protectedRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange('A1:B5');
var rule = SpreadsheetApp.newDataValidation()
.requireFormulaSatisfied('=TRUE') // Modify this to your specific validation rule
.setAllowInvalid(false)
.build();
protectedRange.setDataValidation(rule);
}
Метод 3. Использование защиты листов.
Google Таблицы предоставляют встроенные функции защиты листов, которые позволяют вам ограничить редактирование пользователем листа или определенных диапазонов внутри него. Вы можете защитить диапазоны с помощью пользовательского интерфейса или программно с помощью Apps Script.
function protectRangeWithSheetProtection() {
var protectedRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange('A1:B5');
var protection = protectedRange.protect().setDescription('Protected Range');
// Disable all editing except for certain users or user groups
protection.setWarningOnly(true);
protection.addEditors(['user1@example.com', 'user2@example.com']);
}
Метод 4. Использование пользовательского меню.
Вы можете создать в своей электронной таблице собственное меню, которое позволит пользователям редактировать определенные диапазоны. Предоставляя удобный интерфейс, вы можете помочь пользователям вносить изменения только в разрешенных диапазонах и предотвратить случайные изменения в других местах.
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Edit Protected Range', 'openProtectedRangeDialog')
.addToUi();
}
function openProtectedRangeDialog() {
// Display a dialog or sidebar to guide users to edit the protected range
// You can provide instructions, input fields, and validation checks
// Save the edits programmatically within the protected range
}
Защита диапазонов в Google Таблицах, когда пользователь их редактирует, важна для обеспечения целостности данных. В этой статье мы рассмотрели различные методы достижения этой цели с помощью скрипта Google Apps. Предпочитаете ли вы использовать триггеры, проверку данных, защиту листа или пользовательские меню, для каждого сценария найдется метод. Выберите тот, который лучше всего соответствует вашим потребностям, и обеспечьте безопасность данных своих таблиц!