2012-07-05 11 views
14

Jeśli utworzyć prostą aplikację internetową HTML w Google Apps Script, na przykład:Użyj projektu plików JavaScript i CSS w aplikacji internetowej Google Apps Script?

function doGet() { 
    return HtmlService.createHtmlOutputFromFile("index.html"); 
} 

i index.html wygląda następująco:

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<div>Test</div> 

to możliwe, aby dodać JS i CSS pliki jako część projektu i uwzględnić je za pomocą skryptów i tagów linków, czy też muszą one być inline/hostowane w innym miejscu?

+0

Nie dokładnie tego, o co prosiłeś, ale możliwe obejście: interfejs API google.script - https://developers.google.com/apps-script/html_service # GoogleScriptAPI – TomTasche

+0

Ostatnio napotkałem ten problem. Dobry znaleźć tutaj – qodeninja

Odpowiedz

2

Na razie nie można włączyć skryptu CSS i JS do projektu Google Apps Script. Będziesz musiał go hostować gdzieś indziej i wskazać URL w swoim szablonie.

37

Oto obejście znalazłem przydatne:

  1. Dodaj tę funkcję na swojej stronie serwera JavaScript:

    function getContent(filename) { 
        return HtmlService.createTemplateFromFile(filename).getRawContent(); 
    } 
    
  2. Dodaj drugi „html” plik do projektu, który zawiera tylko JS lub CSS otoczone tagami <script> lub <style>.

    <!-- myscript.js.html --> 
    <script> 
        alert("Script included!"); 
    </script> 
    
  3. Teraz można dołączyć skrypt w głównym szablonie HTML tak:

    <?!= getContent("myscript.js") ?> 
    

W ten sposób można mieć JS i CSS podzielone na tyle plików, ile chcesz i zachować je wszystkie dostępne z poziomu projektu Apps Script.

+0

jest o wiele lepiej niż wybrana odpowiedź. –

+1

To dlatego, że po udzieleniu odpowiedzi na to pytanie było to jedyne prawidłowe rozwiązanie. Google dodała tę funkcję * po * fakcie, a OP nigdy nie zmienił zaakceptowanej odpowiedzi.Jest to jeden z powodów, dla których istnieje upvoting - społeczność wie, jakie jest preferowane rozwiązanie, w przypadku, gdy zaakceptowana odpowiedź jest nieaktualna. –

+1

Alf - POKE, prawdopodobnie powinieneś zmienić zaakceptowaną odpowiedź, ponieważ rozwiązuje ona problem dość dobrze. – Mogsdad

6

Google zapewnia podobne rozwiązanie here.

Zasadniczo, proponujemy dodać tę funkcję do pliku .gs:

function include(filename) { 
    return HtmlService.createHtmlOutputFromFile(filename) 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
     .getContent(); 
} 

i dodać jedną lub obie z nich do pliku .html:

<?!= include('Stylesheet'); ?> 
<?!= include('JavaScript'); ?> 

nazwiska w cytatów oczywiście odnoszą się do oddzielnych plików .html zawierających Twój kod JS lub CSS z tagami <script> lub <style>.

1

Możesz bezpośrednio renderować plik wewnątrz znacznika scriptlet.

<?!= HtmlService.createTemplateFromFile("example.js").getRawContent() ?> 

Utwórz plik example.js.html w swoim projekcie skryptu aplikacji. Podczas renderowania w tagu scriptlet nie podawaj rozszerzenia ".html"

Powiązane problemy