Что такое Google Apps Script и зачем нужны права доступа?
Google Apps Script – это облачный язык сценариев, позволяющий автоматизировать задачи в Google Workspace, такие как Google Sheets, Docs, Forms и другие. Он позволяет создавать собственные функции, интегрировать приложения и расширять функциональность стандартных инструментов Google.
Права доступа в Google Apps Script определяют, кто может просматривать, редактировать и запускать ваши скрипты. Без правильной настройки прав доступа, ваши скрипты и, что более важно, данные, к которым они обращаются, могут быть уязвимы для несанкционированного доступа.
Обзор различных уровней доступа к скриптам
Существует несколько уровней доступа к скриптам Google Apps Script, каждый из которых предоставляет разные возможности:
- Владелец: Имеет полный контроль над скриптом, включая возможность редактирования, запуска, изменения прав доступа и удаления скрипта.
- Редактор: Может редактировать и запускать скрипт, но не может изменять права доступа или удалять его.
- Читатель (Просмотр): Может просматривать код скрипта, но не может его редактировать или запускать.
- Исполнитель: Может запускать скрипт, если скрипт позволяет это (подробнее об этом ниже).
Для скриптов, связанных с Google Sheets, Docs или Forms, права доступа к скрипту наследуются от прав доступа к файлу, к которому он привязан. Для автономных скриптов (не связанных с конкретным файлом) права доступа настраиваются отдельно.
Важность правильной настройки прав доступа для безопасности данных
Неправильно настроенные права доступа могут привести к утечке конфиденциальной информации, несанкционированному изменению данных или даже полной потере контроля над вашими скриптами и данными. Особенно важно следить за правами доступа к скриптам, которые работают с чувствительной информацией, такой как финансовые данные, персональные данные клиентов или коммерческая тайна.
Настройка прав доступа к скрипту, связанному с файлом Google Диска
Как предоставить доступ к скрипту конкретным пользователям
Права доступа к скриптам, связанным с Google Sheets, Docs и другими файлами на Google Диске, контролируются через настройки доступа к самому файлу.
- Откройте Google Sheet, Doc или Form, к которому привязан скрипт.
- Нажмите кнопку «Поделиться» в правом верхнем углу.
- В поле «Добавить пользователей и группы» введите адрес электронной почты пользователя, которому хотите предоставить доступ.
- Выберите уровень доступа из выпадающего списка (Редактор, Читатель). Права на запуск скрипта определяются отдельно (см. ниже).
Предоставление доступа группе пользователей
Чтобы предоставить доступ к скрипту группе пользователей, добавьте группу Google в поле «Добавить пользователей и группы» в настройках доступа к файлу. У всех членов группы будут такие же права доступа, как и у группы.
Разрешения на выполнение скрипта: кто может запускать скрипт
Даже если пользователь имеет доступ к файлу (например, Google Sheet), это не означает, что он автоматически может запускать связанный с ним скрипт. Разрешение на запуск скрипта определяется настройками триггеров и функциями onOpen()
и onEdit()
. Если скрипт запускается от имени пользователя (например, при открытии документа), то пользователю потребуется авторизовать скрипт. Если скрипт запускается от имени владельца (например, триггер по времени), авторизация пользователя не требуется.
Пример кода:
/**
* @OnlyCurrentDoc
*/
/**
* Эта функция вызывается при открытии Google Sheets.
* Добавляет пункт меню "Custom Menu" в интерфейс.
*/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom Menu')
.addItem('Show Sidebar', 'showSidebar')
.addToUi();
}
/**
* Функция показывает боковую панель с HTML контентом.
*/
function showSidebar() {
let html = HtmlService.createHtmlOutputFromFile('Sidebar')
.setTitle('Custom Sidebar');
SpreadsheetApp.getUi()
.showSidebar(html);
}
/**
* Пример функции, выполняющей анализ данных.
* @param {string} range - Диапазон для анализа.
* @return {number} Среднее значение в указанном диапазоне.
*/
function calculateAverage(range: string): number {
let values = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(range).getValues();
let sum: number = 0;
let count: number = 0;
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
if (typeof values[i][j] === 'number') {
sum += values[i][j];
count++;
}
}
}
return count > 0 ? sum / count : 0;
}
В этом примере функция onOpen()
требует разрешения пользователя на запуск, так как она взаимодействует с пользовательским интерфейсом Google Sheets.
Редактирование и просмотр: различия в уровнях доступа к скрипту
- Редактирование: Пользователи с правами редактора файла могут просматривать и редактировать код скрипта непосредственно в редакторе Google Apps Script. Они также могут запускать скрипт.
- Просмотр: Пользователи с правами просмотра файла могут просматривать код скрипта в редакторе Google Apps Script, но не могут его редактировать или запускать. Они могут запускать скрипт только если скрипт запускается автоматически (например, триггером) или если им явно предоставлено разрешение на запуск скрипта.
Настройка прав доступа к автономному скрипту Google Apps Script
Особенности работы с автономными скриптами и доступом
Автономные скрипты – это скрипты, которые не связаны с конкретным файлом Google Диска. Они создаются непосредственно в редакторе Google Apps Script. Права доступа к автономным скриптам настраиваются отдельно от прав доступа к файлам Google Диска.
- Откройте редактор Google Apps Script.
- Выберите скрипт, к которому хотите настроить права доступа.
- В редакторе скриптов перейдите в раздел «Общий доступ» (обычно находится в меню «Файл» -> «Свойства проекта», а затем «Общий доступ» или кнопка «Поделиться»).
- Добавьте пользователей или группы и укажите уровень доступа (Редактор, Просмотр).
Назначение прав доступа к библиотекам, используемым скриптом
Если ваш автономный скрипт использует библиотеки, необходимо убедиться, что пользователи, которым вы предоставили доступ к скрипту, также имеют доступ к этим библиотекам. Им необходимо предоставить хотя бы права на просмотр библиотеки.
Как предоставить доступ к сервисам Google (например, Sheets, Docs) для автономного скрипта
Автономные скрипты, которые взаимодействуют с сервисами Google (например, Sheets, Docs), требуют авторизации. При первом запуске скрипта пользователю будет предложено предоставить скрипту разрешение на доступ к этим сервисам. Разрешения предоставляются на уровне аккаунта Google, а не на уровне отдельного скрипта.
Управление и аудит прав доступа
Просмотр текущих прав доступа к скрипту
Для просмотра текущих прав доступа к скрипту, следуйте инструкциям:
- Для скриптов, связанных с файлами Google Диска: Откройте файл, к которому привязан скрипт, нажмите «Поделиться» и просмотрите список пользователей и групп с указанием их уровня доступа.
- Для автономных скриптов: Откройте редактор Google Apps Script, выберите скрипт и перейдите в раздел «Общий доступ».
Изменение прав доступа для пользователей и групп
Для изменения прав доступа, выполните те же действия, что и при предоставлении доступа, и выберите другой уровень доступа для пользователя или группы.
Отзыв прав доступа: как запретить доступ к скрипту
Для отзыва прав доступа, удалите пользователя или группу из списка «Общий доступ». Это немедленно прекратит их доступ к скрипту.
Рекомендации по регулярному аудиту прав доступа
Рекомендуется регулярно проводить аудит прав доступа к вашим скриптам, особенно если они работают с конфиденциальной информацией. Это поможет выявить и устранить потенциальные угрозы безопасности.
Решение проблем с правами доступа и распространенные ошибки
Сообщение об ошибке ‘Требуется разрешение’ и способы его устранения
Ошибка «Требуется разрешение» возникает, когда скрипт пытается получить доступ к ресурсу (например, Google Sheets, Drive), для которого у пользователя нет прав доступа. Чтобы устранить эту ошибку, убедитесь, что пользователь авторизовал скрипт и что у него есть необходимые разрешения на доступ к ресурсу.
Пример кода, показывающий запрос авторизации:
function checkAndAuthorize() {
if (ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.REQUIRED).getAuthorizationStatus() == ScriptApp.AuthorizationStatus.REQUIRED) {
Logger.log('Необходимо авторизовать скрипт.');
// Здесь можно добавить код для отображения пользователю инструкции по авторизации.
throw new Error('Необходимо авторизовать скрипт для продолжения работы.');
} else {
Logger.log('Скрипт авторизован.');
}
}
Пользователь не может запустить скрипт: причины и решения
Причины, по которым пользователь не может запустить скрипт:
- У пользователя нет прав доступа к файлу, к которому привязан скрипт.
- У пользователя нет разрешения на запуск скрипта (например, если скрипт требует авторизации, а пользователь ее не предоставил).
- Скрипт содержит ошибки, которые препятствуют его выполнению.
Решения:
- Проверьте права доступа пользователя к файлу.
- Убедитесь, что пользователь авторизовал скрипт.
- Проверьте код скрипта на наличие ошибок.
Проблемы с доступом к данным из скрипта и их устранение
Проблемы с доступом к данным могут возникнуть, если скрипт пытается получить доступ к данным, которые находятся в другом файле или сервисе, и у пользователя нет прав доступа к этому файлу или сервису. Убедитесь, что у пользователя есть права на чтение данных. Так же, необходимо убедиться, что скрипт имеет права на чтение этих данных.
Наилучшие практики по предотвращению проблем с правами доступа
- Предоставляйте доступ к скриптам только тем пользователям, которым это действительно необходимо.
- Используйте группы Google для управления правами доступа.
- Регулярно проводите аудит прав доступа к вашим скриптам.
- Используйте принцип наименьших привилегий: предоставляйте пользователям только те права доступа, которые им необходимы для выполнения их задач.
- Тщательно проверяйте код скрипта на наличие ошибок и уязвимостей.