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