Служба HTML: ограничения

Для защиты пользователей от вредоносного HTML или JavaScript, HTML-сервис использует iframe для изоляции веб-приложений или пользовательских интерфейсов для Google Docs, Google Sheets и Forms. В других ситуациях, например, при генерации текста электронного письма, HTML-сервис не использует песочницу. Песочница накладывает ограничения на код на стороне клиента.

Режим песочницы

За исключением режима 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 необходимо установить атрибут `target` ссылки либо в _top , либо в _blank :

Code.js

function doGet() {
  var template = HtmlService.createTemplateFromFile('top');
  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

top.html

<!DOCTYPE html>
<html>
 <body>
   <div>
     <a href="http://google.com" target="_top">Click Me!</a>
   </div>
 </body>
</html>

Вы также можете переопределить этот атрибут, используя тег <base> в разделе <head> окружающей веб-страницы:

<!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.