Чтобы защитить пользователей от вредоносного HTML-кода или JavaScript, Apps Script использует iframes для изоляции веб-приложений HTML-сервиса или пользовательских интерфейсов для Google Docs, Sheets и Forms. (HTML-сервис не использует песочницу в других ситуациях, например, при формировании текста электронного письма.) Песочница накладывает ограничения на клиентский код.
Режим песочницы
Все режимы песочницы теперь не поддерживаются, за исключением IFRAME . Приложения, использующие старые режимы песочницы, теперь автоматически используют новый режим IFRAME . Если у вас есть скрипты, разработанные с использованием старых режимов ( NATIVE и EMULATED ), следуйте инструкциям по миграции , чтобы обеспечить их корректную работу в режиме IFRAME .
Метод setSandboxMode теперь не действует при вызове.
Ограничения в режиме IFRAME
Режим песочницы IFRAME основан на функции песочницы iframe в HTML5 и использует следующие ключевые слова:
-
allow-same-origin -
allow-forms -
allow-scripts -
allow-popups -
allow-downloads -
allow-modals -
allow-popups-to-escape-sandbox -
allow-top-navigation-by-user-activation— этот атрибут устанавливается только для автономных проектов сценариев .
Ключевое слово allow-top-navigation , которое позволяет контенту перемещаться по контексту просмотра верхнего уровня, ограничено и не устанавливается как атрибут в песочнице. Если вам нужно перенаправить скрипт, добавьте вместо этого ссылку или кнопку, чтобы пользователь мог выполнить действие.
Установка атрибута цели ссылки
В режиме IFRAME необходимо установить атрибут цели ссылки на _top или _blank :
Код.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
топ.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
Вы также можете переопределить этот атрибут, используя тег <base> в разделе заголовка веб-страницы:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
Для активного контента требуется HTTPS
«Активный» контент , такой как скрипты, внешние таблицы стилей и запросы XmlHttpRequests, должен загружаться по протоколу HTTPS, а не HTTP.