2017-07-21 4 views
2

Ich habe einen Code, der wie folgt aussieht.Wie JavaScript-Variable in Google scriptlet passieren?

<script> 
function loadmainTBL(){ 
<? var data = SpreadsheetApp 
    .getActiveSpreadsheet().getSheetByName("Customer Logs Information Database") 
    .getDataRange() 
    .getValues(); ?> 
var number = 6 

<?for (var i = 12; i < data.length; i++) { ?> 
<? if (data[i][0] == "I want to put it here") { ?> 
var tableHeaderRowCount = 1; 
var table = document.getElementById('TableContainer'); 
var rowCount = table.rows.length; 
for (var i = tableHeaderRowCount; i < rowCount; i++) { 
    table.deleteRow(tableHeaderRowCount); 
} 
<?}?> 
<?}?> 
} 
</script> 

, wie Sie diesen Code sehen kann, ist in HTML-Datei und es ist Komponieren von Javascript und Google scriptlet meine Frage ist. Wie kann ich das weitergeben?

var number = 6 

in diesem?

<? if (data[i][0] == "I want to put it here") { ?> 

Hier ist der HTML-Code.

<? var data = SpreadsheetApp 
    .getActiveSpreadsheet().getSheetByName("Customer Logs Information Database") 
    .getDataRange() 
    .getValues(); ?> 

<table id = "TableContainer" cellspacing="2" cellpadding="3" width ="100%" align = "center" class="hoverTable"> 
    <th bgcolor = "darkgreen"><font color="white">#</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Area</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Customer Name</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Person In Charge</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Remarks</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Status</font></th> 
    <th bgcolor = "darkgreen"><font color="white">Doc. Date</font></th> 
    <th bgcolor = "darkgreen"></th> 
    <? for (var i = 12; i < data.length; i++) { ?> 
    <tr> 
    <td class="dataid"><?= data[i][0] ?></td> 
    <td class="area"><?= data[i][1] ?></td> 
    <td class="cusname"><?= data[i][2] ?></td> 
    <td class="cic" width = "200px"><?= data[i][3] ?></td> 
    <td class="remarks" ><?= data[i][4] ?></td> 
    <td class="status" width = "70px"><?= data[i][5] ?></td> 
    <td class="docdate"><?= data[i][6] ?></td> 
    <td ><img class="click-to-select" src="https://docs.google.com/uc?id=0By6kUPbaVMWCbUI0LTJTR2g2N3M" alt="Submit" width="13px" height="13px" title = "Edit Selected Data" data-toggle="modal" data-target="#myModal"/> 
    </td> 
    <? } ?> 
    </tr> 
</table> 

Tysm für zukünftige Hilfe.

+0

Es ist besser Nummer in code.gs zu erklären oder die obige Funktion in code.gs schreiben und nennen Sie es mit google.script.run.withSuccessHandler (fnName) .loadmainTBL() – Ritz

+0

ich weiß, dass das wird. Ich habe versucht, dass für fast einen halben Tag scheint nicht für mich arbeiten. Kannst du es mir bitte demonstrieren? Sie meinen Code –

+0

sicher verwenden, wenn Sie zu wollen. Ich werde die HTML einfügen, wo es die Tabelle ersetzen wird. –

Antwort

0

In code.gs bevor irgendetwas anderes, legen Sie die folgenden Schritte aus:

//Define this here globally so it is accessed in the HTML Template 
var passedParameter= ' '; 

Sie können diese gleich 6 definieren, oder in einer Funktion es vor, basierend auf einigen Code definieren die Seite zu schaffen. In meinem Fall bin ich der Bereitstellung dieser als Web-App und zwei Variablen über die URL übergeben, die ich dann verschmelzen und speichern, damit meine Client-Seite hat Zugang:

/**----------------------------------------------------------------------------------- 
| 
| Begin section for app interface 
| 
------------------------------------------------------------------------------------*/ 
// Script-as-app template. 
function doGet(passed) { 

if(passed.parameter.festival && passed.parameter.year){ 

Logger.log(passed.parameter); 
passedParameter = passed.parameter.festival + ' ' + passed.parameter.year; 
} 


    var result=HtmlService.createTemplateFromFile('GridView').evaluate() 
     .setTitle('Boxwood Registrations') 
     .setWidth(1285) 
     .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); 

    return result; 

} 

Die obigen 2 Code-Abschnitte meines gesamten Code sind .gs-Datei. Wenn ich den Web-App in meinem Browser laufen füge ich dies bis zum Ende der URL des Web-App:

?festival=myfestival&year=2017 

Meine HTML-Dateien haben jetzt Zugriff auf eine Variable passedParameter genannt, die gleich „myfestival 2017“, die ich Zugang in eine Funktion in meinem HTML mit:

<script> 
function showMenuYear(menuItems) { 
    var list = $('#optionListYear'); 
    var desiredValue = '<?!= passedParameter ?>'; 

//More code here to use the variable desiredValue 
} 
</script> 

Wenn ich brauche, um mehr Informationen von der Serverseite nach Benutzereingabe, wie zum abrufen als eine Tabelle für einen Wert lesen, verwende ich diese in einer Funktion in der HTML-Datei:

<script> 
function setFormList() { 

    var replacement = document.getElementById("OverallGrid"); 
    replacement.innerHTML = "Retrieving Data..."; 

    if ($('#optionListYear').val() === "-1") { 
    replacement.innerHTML = "Select a Festival/Year above."; 
    return; 
    } 


//Run the function getValidRegistrations() which is in a .gs file (server side), passing the value of the element optionListYear. 
    google.script.run.withSuccessHandler(showRegistrationsTable).withFailureHandler(loadFailed).getValidRegistrations($('#optionListYear').val()); 

} 

//If the server side ran succesfully, this is run 
function showRegistrationsTable(returnedItem){ 
    //My code to work with the returned item goes here 
} 

//If the server side failed for some reason an error will be returned 
function loadFailed(returnedError){ 
    //My code to display a error message with the returned item goes here 
} 
</script> 
Verwandte Themen