Usługa HTML: ograniczenia

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby chronić użytkowników przed wyświetlaniem złośliwych plików HTML lub JavaScript, Apps Script używa elementów iframe do sieciowych aplikacji internetowych w trybie piaskownicy lub niestandardowych interfejsów użytkownika w Dokumentach, Arkuszach i Formularzach Google. Usługa HTML nie używa piaskownicy w innych sytuacjach, takich jak generowanie treści e-maila. Piaskownica nakłada ograniczenia na kod po stronie klienta.

Tryb piaskownicy

Wszystkie tryby piaskownicy są teraz wyłączone, z wyjątkiem IFRAME. Aplikacje w starszych trybach piaskownicy automatycznie korzystają z nowszego trybu IFRAME. Jeśli masz skrypty, które zostały utworzone w starszych trybach (NATIVE i EMULATED), postępuj zgodnie z instrukcjami dotyczącymi migracji, by zapewnić ich prawidłowe działanie w trybie IFRAME.

Metoda setSandboxMode nie wywołuje już wywołania.

Ograniczenia w trybie IFRAME

Tryb piaskownicy IFRAME jest oparty na funkcji piaskownicy iframe w HTML5 i używanych z tymi słowami kluczowymi:

  • allow-same-origin
  • allow-forms
  • allow-scripts
  • allow-popups
  • allow-downloads
  • allow-modals
  • allow-popups-to-escape-sandbox
  • allow-top-navigation-by-user-activation – ten atrybut jest ustawiony tylko dla samodzielnych projektów skryptu.

Słowo kluczowe allow-top-navigation, które umożliwia poruszanie się po kontekście przeglądania na najwyższym poziomie, jest ograniczone i nie jest ustawione jako atrybut w piaskownicy. Jeśli chcesz przekierować skrypt, dodaj link lub przycisk, który pozwala użytkownikowi wykonać daną czynność.

W trybie IFRAME ustaw atrybut link jako _top lub _blank:

Kod.js

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

góra.html

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

Możesz też zastąpić ten tag za pomocą tagu <base> w sekcji nagłówka na stronie internetowej:

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

Do aktywnej treści wymagany jest protokół HTTPS

"Active" content, takie jak skrypty, zewnętrzne arkusze stylów i żądania XmlHttpRequest, muszą być ładowane przez HTTPS, a nie HTTP.