2016-07-10 155 views
0

我想要返回數組allArtistsArray中的每個值,它們從電子表格中獲取值,並將它們顯示爲無序列表,首先顯示buttonTemplate,然後顯示電子表格中的每個值。返回for循環的每個值?

我遇到的問題是隻有電子表格中的第一個值被返回並顯示在Web應用程序中。如何在buttonTemplate之後獲得每個值?

 

什麼是顯示的是:

* buttonTemplate 

or 

* value 1 from spreadsheet 

 

我正在試圖讓顯示的是:

* 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; 
} 

回答

0

看起來像你對我應該改變buttonTemplate在價值的for循環,如果這是水庫超要你想要的。例如:buttonTemplate += _2(或者你想要附加的東西不清楚你的例子)。

編輯

沒有一個片斷它很難看到,如果這個工程打轉轉,但這裏是我的意思一個更好的例子:

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是從電子表格中設定值('+'或'button'或其他)。 buttonTemplate應首先顯示爲無序列表項,然後將電子表格中的值作爲更多無序列表項 – user4411473

+0

請參閱上面的編輯! :)如果這不起作用,那麼調試日誌的完整輸出也會非常有用!所以我們都可以看到流量。 –

+0

好吧,我看到你在說什麼。它的工作原理,但即時通過buttonTemplate得到一個undefined - https://snag.gy/NFs3GJ.jpg – user4411473