Aby chronić użytkowników przed złośliwym kodem HTML lub JavaScript, Apps Script używa elementów iframe do tworzenia piaskownicy dla aplikacji internetowych usługi HTML lub niestandardowych interfejsów użytkownika w Dokumentach, Arkuszach i Formularzach Google. (Usługa HTML nie używa piaskownicy w innych sytuacjach, np. podczas generowania treści e-maila). Piaskownica nakłada ograniczenia na kod po stronie klienta.
Tryb piaskownicy
Wszystkie tryby piaskownicy zostały wycofane z wyjątkiem IFRAME. Aplikacje korzystające ze starszych trybów piaskownicy
będą teraz automatycznie używać nowszego trybu IFRAME. Jeśli masz skrypty opracowane w starszych trybach (NATIVE i EMULATED), postępuj zgodnie z instrukcjami migracji, aby mieć pewność, że będą one prawidłowo działać w trybie IFRAME.
Metoda setSandboxMode
nie ma teraz żadnego efektu po wywołaniu.
Ograniczenia w trybie IFRAME
Tryb piaskownicy IFRAME opiera się na funkcji piaskownicy iframe w HTML5, która korzysta z tych słów kluczowych:
- 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 ustawiany tylko w przypadku samodzielnych projektów skryptu.
Słowo kluczowe allow-top-navigation, które umożliwia treściom poruszanie się po kontekście przeglądania najwyższego poziomu, jest ograniczone i nie jest ustawione jako atrybut w piaskownicy. Jeśli musisz przekierować skrypt, dodaj link lub przycisk, aby użytkownik mógł wykonać działanie.
Ustawianie atrybutu elementu docelowego linku
W trybie IFRAME musisz ustawić atrybut link docelowy na _top lub _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>
Możesz też zastąpić ten atrybut za pomocą tagu <base> w sekcji head zamykającej strony internetowej:
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>
HTTPS wymagany w przypadku aktywnych treści
Aktywne treści, takie jak skrypty, zewnętrzne arkusze stylów i żądania XmlHttpRequest, muszą być wczytywane przez HTTPS, a nie HTTP.