Linkowanie do innej strony HTML w Google Apps Script

Podczas linkowania z ScriptDbConsole.html do legendy.html I get the following error message:

Przepraszamy, żądany plik nie istnieje. Proszę sprawdzić adres i spróbuj ponownie.

To normalnie działa w normalnym środowisku, ale chyba nie tutaj. Jest w script.google.com.

Podczas tworzenia nowego .plik html w script.google.com projekt, tworzy go w tym samym miejscu, co w przypadku innych, więc ten kod powinien faktycznie działać prawda? Jak mogę otworzyć legendę?html z ScriptDbConsole.html?

<a href='legend.html' target='_blank'>Open in new window</a>
Author: Mogsdad, 2013-03-27

1 answers

Chociaż HtmlService pozwala na obsługę HTML, nie jest to" hosting " stron i nie można uzyskać dostępu do różnych plików html w projekcie skryptu aplikacji bezpośrednio przez URL. Zamiast tego Twoja aplikacja internetowa będzie miała adres URL, gdy zostanie opublikowana, i jest to jedyny adres URL, który masz.

Oto sposób, w jaki możesz obsługiwać oddzielne strony ze skryptu i zachowywać je podobnie do linków do plików html.

Funkcja doGet() jest przekazywana podczas wywołania zdarzenia i możemy to wykorzystać do wskaż, którą stronę chcemy obsłużyć. Jeśli nasz identyfikator aplikacji internetowej to <SCRIPTURL>, Oto jak będzie wyglądał adres URL i zapytanie o konkretną stronę:

https://script.google.com/macros/s/<SCRIPTURL>/dev?page=my1

Używając template HTML, możemy wygenerować potrzebny URL + querystring w locie. W naszym doGet(), po prostu musimy przeanalizować querystring, aby określić, która strona ma służyć.

Oto skrypt, z dwoma przykładowymi stronami zawierającymi przyciski do przełączania między oni.

Code.gs

/**
 * Get the URL for the Google Apps Script running as a WebApp.
 */
function getScriptUrl() {
 var url = ScriptApp.getService().getUrl();
 return url;
}

/**
 * Get "home page", or a requested page.
 * Expects a 'page' parameter in querystring.
 *
 * @param {event} e Event passed to doGet, with querystring
 * @returns {String/html} Html to be served
 */
function doGet(e) {
  Logger.log( Utilities.jsonStringify(e) );
  if (!e.parameter.page) {
    // When no specific page requested, return "home page"
    return HtmlService.createTemplateFromFile('my1').evaluate();
  }
  // else, use page parameter to pick an html file from the script
  return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate();
}

My1.html

<html>
  <body>
    <h1>Source = my1.html</h1>
    <?var url = getScriptUrl();?><a href='<?=url?>?page=my2'> <input type='button' name='button' value='my2.html'></a>
  </body>
</html>

My2.html

<html>
  <body>
    <h1>Source = my2.html</h1>
    <?var url = getScriptUrl();?><a href='<?=url?>?page=my1'> <input type='button' name='button' value='my1.html'></a>
  </body>
</html>
 38
Author: Mogsdad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-22 16:56:49