2016-05-27 7 views
0

Ich habe ein Skript, das ich als Web-App veröffentlicht habe. Ich wollte eine Standardeinstellung ändern, die auf der URL basiert, mit der die Webanwendung ausgeführt wird. Ich öffne bereits eines von zwei Formularen, aber in einem Formular möchte ich einen Optionsfeld basierend auf einem zweiten übergebenen Parameter ausgewählt haben. In der Datei gs Server-Seite habe ich:Google Script Pass Variable zu Vorlagen HTMLService

function doGet(passed) { 

    switch(passed.parameter.form) { 
    case 'single': 
     var result = HtmlService.createTemplateFromFile('Single').evaluate(); 
     result.setHeight(550); 
     result.setWidth(565); 
     break; 
    case 'grid': 
    default: 
     var result=HtmlService.createTemplateFromFile('GridView').evaluate(); 
     result.setHeight(550); 
     result.setWidth(1285); 
     } 

    return result; 
    } 

auf Googles HTML Service: Templated HTML-Seite gibt es einen Abschnitt Pushing variables to templates das, was zu sein scheint, ich will, aber ich kann es nicht zu arbeiten.

in meiner Single.html Datei ich habe:

 <body> 
     <? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?>  
     ... </body> 

Der HTML-Teil ist über übermäßig vereinfacht und bekommen diese mir zu arbeiten, um meine Enden zu erhalten, die eine viel größere Seite mit Eingabebereiche ist, usw. .

function doGet(passed) { 

    switch(passed.parameter.form) { 
    case 'single': 
     var result = HtmlService.createTemplateFromFile('Single'); 
     result.setHeight(550); 
     result.setWidth(565); 
     result.data = 'Ex'; 
     return result.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME); 
     break; 
    case 'grid': 
    default: 
     var result=HtmlService.createTemplateFromFile('GridView').evaluate(); 
     result.setHeight(550); 
     result.setWidth(1285); 

     return result; 
     } 

    } 

und bekommen Fehler

01:

in einem Versuch,

in der Ergebnisseite angezeigt werden „Bestehende“ zu bekommen, habe ich den obigen Code geändert

Auch wenn ich die setHeight und setWidth in nur die Daten entfernen, wie auf der oben genannten Seite gezeigt, bekomme ich Fehler.

Hat jemand eine Variable an eine Seite wie diese weitergegeben?

Antwort

1

Sieht aus wie die Methodenaufrufe nur in der falschen Reihenfolge sind. Die result.data = 'Ex'; sollte vor der .evaluate() sein, aber die .setHeight() und .setWidth() müssen danach angewendet werden. Ändern Sie Ihr letztes Beispiel leicht:

case 'single': 
     var result = HtmlService.createTemplateFromFile('Single'); 
     result.data = 'Ex'; 

     return result.evaluate() 
        .setHeight(550) 
        .setWidth(565) 
        .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
     break; 

verfolgen ich den Grundfehler bis zu einem verpassten} nach dem if-Anweisung in Ihrer HTML-Datei. Der Code sollte folgendermaßen aussehen:

<? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?> 
+0

Perfekt! Vielen Dank. Und nachdem ich ein} in meinem HTML hinzugefügt habe (ich habe mein Beispiel bearbeitet, habe ich den ursprünglichen Beitrag geschrieben, um die korrekte Syntax dort wiederzugeben), funktioniert das! Danke vielmals! –

+0

Mein Vergnügen! Du bist eingesprungen, als ich bemerkte, dass ich mich selbst vermisste. – DiceGolem