Class Protection

Защита

Доступ и изменение защищенных диапазонов и листов. Защищенный диапазон может защищать либо статический диапазон ячеек, либо именованный диапазон. Защищенный лист может включать незащищенные области. Для электронных таблиц, созданных в старой версии Google Sheets, вместо этого используйте класс PageProtection .

// Protect range A1:B10, then remove all other users from the list of editors.
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('A1:B10');
var protection = range.protect().setDescription('Sample protected range');

// 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();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}
// Remove all range protections in the spreadsheet that the user has permission to edit.
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  if (protection.canEdit()) {
    protection.remove();
  }
}
// Protect the active sheet, then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');

// 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();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

Методы

Метод Тип возврата Краткое описание
addEditor(emailAddress) Protection Добавляет данного пользователя в список редакторов защищенного листа или диапазона.
addEditor(user) Protection Добавляет данного пользователя в список редакторов защищенного листа или диапазона.
addEditors(emailAddresses) Protection Добавляет заданный массив пользователей в список редакторов защищенного листа или диапазона.
addTargetAudience(audienceId) Protection Добавляет указанную целевую аудиторию в качестве редактора защищенного диапазона.
canDomainEdit() Boolean Определяет, имеют ли все пользователи в домене, которому принадлежит электронная таблица, разрешение на редактирование защищенного диапазона или листа.
canEdit() Boolean Определяет, есть ли у пользователя разрешение на редактирование защищенного диапазона или листа.
getDescription() String Получает описание защищенного диапазона или листа.
getEditors() User[] Получает список редакторов для защищенного диапазона или листа.
getProtectionType() ProtectionType Получает тип защищенной области: RANGE или SHEET .
getRange() Range Получает защищаемый диапазон.
getRangeName() String Получает имя защищенного диапазона, если он связан с именованным диапазоном.
getTargetAudiences() TargetAudience[] Возвращает идентификаторы целевых аудиторий, которые могут редактировать защищенный диапазон.
getUnprotectedRanges() Range[] Получает массив незащищенных диапазонов на защищенном листе.
isWarningOnly() Boolean Определяет, использует ли защищенная область защиту на основе предупреждений.
remove() void Снимает защиту с диапазона или листа.
removeEditor(emailAddress) Protection Удаляет данного пользователя из списка редакторов защищенного листа или диапазона.
removeEditor(user) Protection Удаляет данного пользователя из списка редакторов защищенного листа или диапазона.
removeEditors(emailAddresses) Protection Удаляет указанный массив пользователей из списка редакторов защищенного листа или диапазона.
removeTargetAudience(audienceId) Protection Удаляет указанную целевую аудиторию в качестве редактора защищенного диапазона.
setDescription(description) Protection Задает описание защищенного диапазона или листа.
setDomainEdit(editable) Protection Определяет, имеют ли все пользователи в домене, которому принадлежит электронная таблица, разрешение на редактирование защищенного диапазона или листа.
setNamedRange(namedRange) Protection Связывает защищенный диапазон с существующим именованным диапазоном.
setRange(range) Protection Регулирует защищаемый диапазон.
setRangeName(rangeName) Protection Связывает защищенный диапазон с существующим именованным диапазоном.
setUnprotectedRanges(ranges) Protection Снимает защиту с заданного массива диапазонов на защищенном листе.
setWarningOnly(warningOnly) Protection Устанавливает, использует ли этот защищенный диапазон защиту на основе предупреждений.

Подробная документация

addEditor(emailAddress)

Добавляет данного пользователя в список редакторов защищенного листа или диапазона. Этот метод не дает пользователю автоматически права редактировать саму электронную таблицу; для этого вызовите Spreadsheet.addEditor(emailAddress) .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Adds an editor to the spreadsheet using an email address.
// TODO(developer): Replace the email address with a valid email.
ss.addEditor('cloudysanfrancisco@gmail.com');

// Gets a sheet by its name and protects it.
const sheet = ss.getSheetByName('Sheet1');
const sampleProtectedSheet = sheet.protect();

// Adds an editor of the protected sheet using an email address.
// TODO(developer): Replace the email address with a valid email.
sampleProtectedSheet.addEditor('cloudysanfrancisco@gmail.com');

// Gets the editors of the protected sheet.
const editors = sampleProtectedSheet.getEditors();

// Logs the editors' email addresses to the console.
for (const editor of editors) {
  console.log(editor.getEmail());
}

Параметры

Имя Тип Описание
emailAddress String Адрес электронной почты добавляемого пользователя.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

addEditor(user)

Добавляет данного пользователя в список редакторов защищенного листа или диапазона. Этот метод не дает пользователю автоматически права редактировать саму электронную таблицу; для этого вызовите Spreadsheet.addEditor(user) .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Adds the active user as an editor of the protected sheet.
sampleProtectedSheet.addEditor(Session.getActiveUser());

// Gets the editors of the protected sheet.
const editors = sampleProtectedSheet.getEditors();

// Logs the editors' email addresses to the console.
for (const editor of editors) {
  console.log(editor.getEmail());
}

Параметры

Имя Тип Описание
user User Представление пользователя для добавления.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

addEditors(emailAddresses)

Добавляет заданный массив пользователей в список редакторов защищенного листа или диапазона. Этот метод не дает пользователям автоматически разрешения на редактирование самой электронной таблицы; для этого вызовите Spreadsheet.addEditors(emailAddresses) .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Creates variables for the email addresses to add as editors.
// TODO(developer): Replace the email addresses with valid ones.
const TEST_EMAIL_1 = 'cloudysanfrancisco@gmail.com';
const TEST_EMAIL_2 = 'baklavainthebalkans@gmail.com';

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Adds editors to the protected sheet using the email address variables.
sampleProtectedSheet.addEditors([TEST_EMAIL_1, TEST_EMAIL_2]);

// Gets the editors of the protected sheet.
const editors = sampleProtectedSheet.getEditors();

// Logs the editors' email addresses to the console.
for (const editor of editors) {
  console.log(editor.getEmail());
}

Параметры

Имя Тип Описание
emailAddresses String[] Массив адресов электронной почты пользователей для добавления.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

addTargetAudience(audienceId)

Добавляет указанную целевую аудиторию в качестве редактора защищенного диапазона.

Параметры

Имя Тип Описание
audienceId String ID добавляемой целевой аудитории.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

canDomainEdit()

Определяет, имеют ли все пользователи в домене, которому принадлежит электронная таблица, разрешение на редактирование защищенного диапазона или листа. Выдает исключение, если у пользователя нет разрешения на редактирование защищенного диапазона или листа.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Logs whether domain users have permission to edit the protected sheet to the console.
console.log(sampleProtectedSheet.canDomainEdit());

Возвращаться

Booleantrue , если все пользователи в домене, которому принадлежит электронная таблица, имеют разрешение на редактирование защищенного диапазона или листа; false , если они этого не делают.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

canEdit()

Определяет, есть ли у пользователя разрешение на редактирование защищенного диапазона или листа. Владелец электронной таблицы всегда может редактировать защищенные диапазоны и листы.

// Remove all range protections in the spreadsheet that the user has permission to edit.
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  if (protection.canEdit()) {
    protection.remove();
  }
}

Возвращаться

Booleantrue , если у пользователя есть разрешение на редактирование защищенного диапазона или листа; false , если нет

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getDescription()

Получает описание защищенного диапазона или листа. Если описание не задано, этот метод возвращает пустую строку.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet and sets the description.
const sampleProtectedSheet = sheet.protect().setDescription('Sample sheet is protected');

// Gets the description of the protected sheet and logs it to the console.
const sampleProtectedSheetDescription = sampleProtectedSheet.getDescription();
console.log(sampleProtectedSheetDescription);

Возвращаться

String — описание защищенного диапазона или листа или пустая строка, если описание не задано.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getEditors()

Получает список редакторов для защищенного диапазона или листа. Выдает исключение, если у пользователя нет разрешения на редактирование защищенного диапазона или листа.

// Protect the active sheet, then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');

// 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();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

Возвращаться

User[] — массив пользователей с правами на редактирование защищенного диапазона или листа

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getProtectionType()

Получает тип защищенной области: RANGE или SHEET .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Gets the type of the protected area.
const protectionType = sampleProtectedSheet.getProtectionType();

// Logs 'SHEET'to the console since the type of the protected area is a sheet.
console.log(protectionType.toString());

Возвращаться

ProtectionType — Тип защищенной области: RANGE или SHEET .

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getRange()

Получает защищаемый диапазон. Если защита применяется к листу, а не к диапазону, этот метод возвращает диапазон, охватывающий весь лист.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Gets the range 'A1:B10' of Sheet1.
const range = sheet.getRange('A1:B10');

// Makes cells A1:B10 a protected range.
const sampleProtectedRange = range.protect();

// Gets the protected ranges on the sheet.
const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);

// Logs the A1 notation of the first protected range on the sheet.
console.log(protections[0].getRange().getA1Notation());

Возвращаться

Range — защищаемый диапазон.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getRangeName()

Получает имя защищенного диапазона, если он связан с именованным диапазоном. Возвращает null , если защита не связана с именованным диапазоном. Обратите внимание, что сценарии должны явно вызывать setRangeName(rangeName) , чтобы связать защищенный диапазон с именованным диапазоном; вызова Range.protect() для создания защиты из Range , который является именованным диапазоном, без вызова setRangeName(rangeName) недостаточно для их связывания. Однако создание защищенного диапазона из именованного диапазона в пользовательском интерфейсе Google Таблиц связывает их автоматически.

// Protect a named range in a spreadsheet and log the name of the protected range.
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('A1:B10');
var protection = range.protect();
ss.setNamedRange('Test', range);       // Create a named range.
protection.setRangeName('Test');       // Associate the protection with the named range.
Logger.log(protection.getRangeName()); // Verify the name of the protected range.

Возвращаться

String — имя защищенного именованного диапазона или null , если защищенный диапазон не связан с именованным диапазоном.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getTargetAudiences()

Возвращает идентификаторы целевых аудиторий, которые могут редактировать защищенный диапазон.

Возвращаться

TargetAudience[] — массив идентификаторов целевых аудиторий.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getUnprotectedRanges()

Получает массив незащищенных диапазонов на защищенном листе. Если объект Protection соответствует защищенному диапазону, а не защищенному листу, этот метод возвращает пустой массив. Чтобы изменить незащищенные диапазоны, используйте setUnprotectedRanges(ranges) для установки нового массива диапазонов; для повторной защиты всего листа установите пустой массив.

// Unprotect cells E2:F5 in addition to any other unprotected ranges in the protected sheet.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect();
var unprotected = protection.getUnprotectedRanges();
unprotected.push(sheet.getRange('E2:F5'));
protection.setUnprotectedRanges(unprotected);

Возвращаться

Range[] — массив незащищенных диапазонов на защищенном листе

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

isWarningOnly()

Определяет, использует ли защищенная область защиту на основе предупреждений. Защита на основе предупреждений означает, что каждый пользователь может редактировать данные в области, за исключением того, что при редактировании появляется предупреждение с просьбой подтвердить редактирование. По умолчанию защищенные диапазоны или листы не основаны на предупреждениях. Чтобы перейти в состояние предупреждения, используйте setWarningOnly(warningOnly) .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit')

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Sets the warning status for the protected sheet as true.
sampleProtectedSheet.setWarningOnly(true);

const protectedSheetWarningStatus = sampleProtectedSheet.isWarningOnly();

// Logs the warning status of the protected sheet to the console.
console.log(protectedSheetWarningStatus);

Возвращаться

Booleantrue , если защищенный диапазон или лист использует только защиту на основе предупреждений.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

remove()

Снимает защиту с диапазона или листа.

// Remove all range protections in the spreadsheet that the user has permission to edit.
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  if (protection.canEdit()) {
    protection.remove();
  }
}
// Remove sheet protection from the active sheet, if the user has permission to edit it.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
if (protection && protection.canEdit()) {
  protection.remove();
}

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

removeEditor(emailAddress)

Удаляет данного пользователя из списка редакторов защищенного листа или диапазона. Обратите внимание: если пользователь является членом группы Google, у которой есть разрешение на редактирование, или если все пользователи в домене имеют разрешение на редактирование, пользователь по-прежнему может редактировать защищенную область. Ни владелец электронной таблицы, ни текущий пользователь не могут быть удалены.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Creates a variable for an email address.
// TODO(developer): Replace the email address with a valid one.
const TEST_EMAIL = 'baklavainthebalkans@gmail.com';

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Adds an editor to the protected sheet using the email address variable.
sampleProtectedSheet.addEditor(TEST_EMAIL);

// Removes the editor from the protected sheet using the email address variable.
sampleProtectedSheet.removeEditor(TEST_EMAIL);

// Gets the editors of the protected sheet.
const editors = sampleProtectedSheet.getEditors();

// Logs the editors' email addresses to the console.
for (const editor of editors) {
  console.log(editor.getEmail());
}

Параметры

Имя Тип Описание
emailAddress String Адрес электронной почты пользователя, которого необходимо удалить.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

removeEditor(user)

Удаляет данного пользователя из списка редакторов защищенного листа или диапазона. Обратите внимание: если пользователь является членом группы Google, у которой есть разрешение на редактирование, или если все пользователи в домене имеют разрешение на редактирование, пользователь по-прежнему может редактировать защищенную область. Ни владелец электронной таблицы, ни текущий пользователь не могут быть удалены.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets a sheet by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Removes the active user from the editors of the protected sheet.
sampleProtectedSheet.removeEditor(Session.getActiveUser());

// Gets the editors of the protected sheet.
const editors = sampleProtectedSheet.getEditors();

// Logs the editors' email addresses to the console.
for (const editor of editors) {
  console.log(editor.getEmail());
}

Параметры

Имя Тип Описание
user User Представление пользователя, которого необходимо удалить.

Возвращаться

Protection — объект, представляющий параметры защиты, для объединения

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

removeEditors(emailAddresses)

Удаляет указанный массив пользователей из списка редакторов защищенного листа или диапазона. Обратите внимание, что если кто-либо из пользователей является членом группы Google, у которой есть разрешение на редактирование, или если все пользователи в домене имеют разрешение на редактирование, эти пользователи по-прежнему могут редактировать защищенную область. Ни владелец электронной таблицы, ни текущий пользователь не могут быть удалены.

// Protect the active sheet, then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');

// 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();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

Параметры

Имя Тип Описание
emailAddresses String[] Массив адресов электронной почты пользователей, которых нужно удалить.

Возвращаться

Protection — объект, представляющий параметры защиты, для объединения

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

removeTargetAudience(audienceId)

Удаляет указанную целевую аудиторию в качестве редактора защищенного диапазона.

Параметры

Имя Тип Описание
audienceId String ID целевой аудитории, которую необходимо удалить.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setDescription(description)

Задает описание защищенного диапазона или листа.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets the sheet 'Sheet1' by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet.
const sampleProtectedSheet = sheet.protect();

// Sets the sheet description to 'Sheet1 is protected.'
sampleProtectedSheet.setDescription('Sheet1 is protected');

// Gets the description of the protected sheet.
const sampleProtectedSheetDescription = sampleProtectedSheet.getDescription();

// Logs the description of the protected sheet to the console.
console.log(sampleProtectedSheetDescription);

Параметры

Имя Тип Описание
description String Описание защищаемого диапазона или листа.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setDomainEdit(editable)

Определяет, имеют ли все пользователи в домене, которому принадлежит электронная таблица, разрешение на редактирование защищенного диапазона или листа. Обратите внимание, что любые пользователи с явным разрешением на редактирование могут редактировать защищенную область независимо от этого параметра. Создает исключение, если электронная таблица не принадлежит домену Google Workspace (то есть если она принадлежит учетной записи gmail.com).

Параметры

Имя Тип Описание
editable Boolean true , если все пользователи в домене, которому принадлежит электронная таблица, должны иметь разрешение на редактирование защищенного диапазона или листа; false если нет.

Возвращаться

Protection — объект, представляющий параметры защиты, для объединения

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setNamedRange(namedRange)

Связывает защищенный диапазон с существующим именованным диапазоном. Если именованный диапазон покрывает область, отличную от текущего защищенного диапазона, этот метод вместо этого перемещает защиту, чтобы покрыть именованный диапазон. Именованный диапазон должен находиться на том же листе, что и текущий защищенный диапазон. Обратите внимание, что сценарии должны явно вызывать этот метод, чтобы связать защищенный диапазон с именованным диапазоном; вызова Range.protect() для создания защиты из Range , который является именованным диапазоном, без вызова setRangeName(rangeName) недостаточно для их связывания. Однако создание защищенного диапазона из именованного диапазона в пользовательском интерфейсе Google Таблиц связывает их автоматически.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Protects cells A1:D10 on Sheet1.
const sheet = ss.getSheetByName('Sheet1');
const protectedRange = sheet.getRange('A1:D10').protect();

// Logs the current protected range, A1:D10.
console.log(protectedRange.getRange().getA1Notation());

// Creates a named range for cells E1:J10 called 'NewRange.'
const newRange = sheet.getRange('E1:J10');
ss.setNamedRange('NewRange', newRange);
const namedRange = ss.getNamedRanges()[0];

// Updates the protected range to the named range, 'NewRange.'
// This updates the protected range on Sheet1 from A1:D10 to E1:J10.
protectedRange.setNamedRange(namedRange);

// Logs the updated protected range to the console.
console.log(protectedRange.getRange().getA1Notation());

Параметры

Имя Тип Описание
namedRange NamedRange Существующий именованный диапазон для связи с защищенным диапазоном.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setRange(range)

Регулирует защищаемый диапазон. Если данный диапазон покрывает область, отличную от текущего защищенного диапазона, этот метод вместо этого перемещает защиту, чтобы покрыть новый диапазон.

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Protects cells A1:D10 on Sheet1 of the spreadsheet.
const sheet = ss.getSheetByName('Sheet1');
const protectedRange = sheet.getRange('A1:D10').protect();

// Logs the original protected range, A1:D10, to the console.
console.log(protectedRange.getRange().getA1Notation());

// Gets the range E1:J10.
const newRange = sheet.getRange('E1:J10');

// Updates the protected range to E1:J10.
protectedRange.setRange(newRange);

// Logs the updated protected range to the console.
console.log(protectedRange.getRange().getA1Notation());

Параметры

Имя Тип Описание
range Range Новый диапазон для защиты от правок.

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setRangeName(rangeName)

Связывает защищенный диапазон с существующим именованным диапазоном. Если именованный диапазон покрывает область, отличную от текущего защищенного диапазона, этот метод вместо этого перемещает защиту, чтобы покрыть именованный диапазон. Именованный диапазон должен находиться на том же листе, что и текущий защищенный диапазон. Обратите внимание, что сценарии должны явно вызывать этот метод, чтобы связать защищенный диапазон с именованным диапазоном; вызова Range.protect() для создания защиты из Range , который является именованным диапазоном, без вызова setRangeName(rangeName) недостаточно для их связывания. Однако создание защищенного диапазона из именованного диапазона в пользовательском интерфейсе Google Таблиц связывает их автоматически.

// Protect a named range in a spreadsheet and log the name of the protected range.
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('A1:B10');
var protection = range.protect();
ss.setNamedRange('Test', range);       // Create a named range.
protection.setRangeName('Test');       // Associate the protection with the named range.
Logger.log(protection.getRangeName()); // Verify the name of the protected range.

Параметры

Имя Тип Описание
rangeName String Имя именованного диапазона для защиты.

Возвращаться

Protection — объект, представляющий параметры защиты, для объединения

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setUnprotectedRanges(ranges)

Снимает защиту с заданного массива диапазонов на защищенном листе. Выдает исключение, если объект Protection соответствует защищенному диапазону вместо защищенного листа или если какой-либо из диапазонов не находится на защищенном листе. Чтобы изменить незащищенные диапазоны, задайте новый массив диапазонов; для повторной защиты всего листа установите пустой массив.

// Protect the active sheet except B2:C5, then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');
var unprotected = sheet.getRange('B2:C5');
protection.setUnprotectedRanges([unprotected]);

// 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();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

Параметры

Имя Тип Описание
ranges Range[] Массив диапазонов, которые нужно оставить незащищенными на защищенном листе.

Возвращаться

Protection — объект, представляющий параметры защиты, для объединения

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setWarningOnly(warningOnly)

Устанавливает, использует ли этот защищенный диапазон защиту на основе предупреждений. Защита на основе предупреждений означает, что каждый пользователь может редактировать данные в области, за исключением того, что при редактировании появляется предупреждение с просьбой подтвердить редактирование. По умолчанию защищенные диапазоны или листы не основаны на предупреждениях. Чтобы проверить состояние предупреждения, используйте isWarningOnly() .

// Opens the spreadsheet file by its URL. If you created your script from within
// a Google Sheets file, you can use SpreadsheetApp.getActiveSpreadsheet() instead.
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc123456/edit');

// Gets the sheet 'Sheet1' by its name.
const sheet = ss.getSheetByName('Sheet1');

// Protects the sheet and sets the protection to warning-based.
const sampleProtectedSheet = sheet.protect().setWarningOnly(true);

// Logs whether the protected sheet is warning-based to the console.
console.log(sampleProtectedSheet.isWarningOnly());

Параметры

Имя Тип Описание
warningOnly Boolean

Возвращаться

Protection — Объект, представляющий параметры защиты для цепочки.

Авторизация

Сценарии, использующие этот метод, требуют авторизации в одной или нескольких следующих областях :

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets