2016-07-10 12 views
0

Ich versuche, jeden Wert aus dem Array allArtistsArray, die Werte aus einer Kalkulationstabelle erhält, und haben sie als eine ungeordnete Liste mit buttonTemplate zuerst, und dann jeden Wert in der Kalkulationstabelle danach angezeigt.jeden Wert von for-Schleife zurückgeben?

Das Problem, das ich habe, ist, dass nur der erste Wert aus der Tabelle zurückgegeben und in der Web-App angezeigt wird. Wie bekomme ich jeden Wert nach buttonTemplate angezeigt?

 

Was angezeigt Sein ist:

* buttonTemplate 

or 

* value 1 from spreadsheet 

 

Was ich versuche erhalten angezeigt:

* buttonTemplate 
* value 1 from spreadsheet 
* value 2 from spreadsheet 
* value 3 from spreadsheet 
* etc 

 


 

index.html

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <?!= getContent("js") ?> 
    <?!= getContent("css") ?> 
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Abel"> 
    </head> 
    <body> 
    <div id="artistTabs"> 
     <ul id="artistList"> 
     <?!= createArtistList(); ?> 
     </ul> 
    </div> 
    </body> 
</html> 

 

code.gs

var ss = SpreadsheetApp.openById('id'); 
var sheet = ss.getSheets()[0]; 

function doGet() 
{ 
    return HtmlService.createTemplateFromFile('index').evaluate(); 
} 

function getContent(filename) 
{ 
    return HtmlService.createHtmlOutputFromFile(filename).getContent(); 
} 

function createArtistList() 
{ 
    var buttonStartingRow = 2; 
    var buttonStartingColumn = 1; 

    var buttonCell = sheet.getRange(buttonStartingRow, buttonStartingColumn).getValue(); 

    var x = '<li><a onClick="addArtist(); return false;" href="">'; 
    var y = buttonCell; 
    var z = '</a></li>'; 

    var buttonTemplate = x + y + z; 

    //return buttonTemplate; 

    var startingRow = 2; 
    var startingColumn = 1; 
    var howManyRows = sheet.getLastRow() - 1; 
    var howManyColumns = 1; 

    var allArtistsArray = sheet.getRange(startingRow, startingColumn, howManyRows, howManyColumns).getValues(); //get every name in 1st column after second row 
    //allArtistsArray = allArtistsArray.filter(function(n){return n[0] !== '' && n[0] !== buttonCell}); //filter 'buttonCell' value and blank rows 
    //allArtistsArray = allArtistsArray.toString().split(","); //flatten 2d array to 1d array 

    //Logger.log(allArtistsArray); 

    for (i = 0; i < allArtistsArray.length; i++) 
    { 
    allArtistsArray = allArtistsArray.filter(function(n){return n[0] !== '' && n[0] !== buttonCell}); //filter 'buttonCell' value and blank rows 
    allArtistsArray = allArtistsArray.toString().split(","); //flatten 2d array to 1d array 

    if (allArtistsArray == '') 
    { 
     Logger.log("array = blank"); 
     break; //leave for loop and only return buttonTemplate ??? 
    } 
    else 
    { 
     var x1 = '<li><a onClick="test(); return false;" href="">'; 
     var z1 = '</a></li>'; 

     var _1 = allArtistsArray[i]; 
     var _2 = x1 + _1 + z1; 

     Logger.log(_2); 
    } 
    } 
    Logger.log(allArtistsArray); 
    return buttonTemplate; 
} 

Antwort

0

mir Sieht aus wie Sie den Wert buttonTemplate Ändern sollte in Ihrem for-Schleife, wenn das die res ist Ult du willst. Zum Beispiel: buttonTemplate += _2 (oder was auch immer Sie anhängen möchten, ist es aus Ihrem Beispiel unklar).

EDIT

Ohne Schnipsel zu spielen, um es ist schwer zu sehen, ob das funktioniert, aber hier ist ein besseres Beispiel dafür, was ich meinte:

function createArtistList() 
{ 
    var buttonStartingRow = 2; 
    var buttonStartingColumn = 1; 

    var buttonCell = sheet.getRange(buttonStartingRow, buttonStartingColumn).getValue(); 

    var x = '<li><a onClick="addArtist(); return false;" href="">'; 
    var y = buttonCell; 
    var z = '</a></li>'; 

    var buttonTemplate = x + y + z; 
    var artistsOutput = ''; 
    //return buttonTemplate; 

    var startingRow = 2; 
    var startingColumn = 1; 
    var howManyRows = sheet.getLastRow() - 1; 
    var howManyColumns = 1; 

    var allArtistsArray = sheet.getRange(startingRow, startingColumn, howManyRows, howManyColumns).getValues(); //get every name in 1st column after second row 
    //allArtistsArray = allArtistsArray.filter(function(n){return n[0] !== '' && n[0] !== buttonCell}); //filter 'buttonCell' value and blank rows 
    //allArtistsArray = allArtistsArray.toString().split(","); //flatten 2d array to 1d array 

    //Logger.log(allArtistsArray); 

    for (i = 0; i < allArtistsArray.length; i++) 
    { 
    allArtistsArray = allArtistsArray.filter(function(n){return n[0] !== '' && n[0] !== buttonCell}); //filter 'buttonCell' value and blank rows 
    allArtistsArray = allArtistsArray.toString().split(","); //flatten 2d array to 1d array 

    if (allArtistsArray == '') 
    { 
     Logger.log("array = blank"); 
     break; //leave for loop and only return buttonTemplate ??? 
    } 
    else 
    { 
     var x1 = '<li><a onClick="test(); return false;" href="">'; 
     var z1 = '</a></li>'; 

     var _1 = allArtistsArray[i]; 

     if (_1 != null) 
     { 
     var _2 = x1 + _1 + z1; 

     artistsOutput += _2; 
     Logger.log(_2); 
     } else { 
     Logger.log('The ' + i + 'th element was null for some reason'); 
     } 
    } 
    } 
    Logger.log(allArtistsArray); 
    return buttonTemplate + artistsOutput; 
} 
+0

buttonTemplate ist ein Sollwert aus der Tabelle ('+' oder 'Knopf' oder etwas). buttonTemplate soll zuerst als ungeordnetes Listenelement angezeigt werden und danach die Werte in der Tabelle danach als ungeordnete Listenelemente – user4411473

+0

Siehe oben Bearbeitungen! :) Wenn dies nicht funktioniert, wäre eine vollständige Ausgabe Ihres Debug-Logs auch hilfreich! So können wir alle den Fluss sehen. –

+0

ok ya ich sehe, was du gesagt hast. Es funktioniert, aber ich bekomme eine undefinierte nach dem ButtonTemplate - https://snag.gy/NFs3GJ.jpg – user4411473

Verwandte Themen