2015-10-08 32 views
0

我想創建一個動態依賴下拉菜單,然後爲了這個,我想有依賴性的一些層次:首先你張之間進行選擇,然後列之間,再行之間。我有一個腳本,現在在谷歌Apps腳本,它看起來像這樣模板化的HTML文件運行:獲取電子表格的表的數組,並列出它們?

<? 
var sheet = SpreadsheetApp.openById("1c7IwmyBrbNq5xwzo-7EyFewCx31WpfP4EzLpkHawffI").getSheetByName("test"); 
var lastRow = sheet.getLastRow(); 

var categoryRange = sheet.getRange("C2:C"+lastRow); 
var category = categoryRange.getValues(); 
?> 

Category: <select name="category"> 
<? for (var i = 0; i < category.length; ++i) { ?> 
<option><?!= category[i] ?></option> 
<? } ?> 
</select> 
<br/> 

什麼我想現在要做的是讓一個數組或某種所有片材的清單在給定的電子表格中,然後將其列在下拉列表中,並附上表格的名稱。

從那裏,我必須找到一種方法,使依賴關係,但隨後選擇表中的下拉會設置的片材爲下一個下拉什麼?

+1

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheets是你在找什麼? – Kriggs

+0

我覺得我已經嘗試過這樣做了嗎?但它沒有解決。我不知道我是否錯誤地閱讀了紙張,或者如果它沒有正確地循環閱讀紙張? –

回答

1

要在HTML最好的做法是使用加載網頁,運行返回你所需要的信息的功能,並從構建HTML,這裏的服務器端功能:

function getSheetsNames(){ 
    var sheetsName = []; 
    var sheets = ss.getSheets(); 
    for(var i = 0; i < sheets.length; i++){ 
     sheetsName .push(sheets[i].getName()) 
    }; 
    return sheetsName; 
} 

如果需要幫助從調用HTML服務器端功能來讀取最佳實踐:

https://developers.google.com/apps-script/guides/html/best-practices#load_data_asynchronously_not_in_templates

+0

這真的很有幫助,讓我看到了很多結構。雖然我看到連接時遇到問題;我想用你的鏈接發送的例子,我可以看到它的任何附加存儲在「事」,但「東西」是不是在任何地方定義?但是,我可以用我發送的代碼中獲得的工作表切換出來? –

+1

好吧,我做到了!非常感謝你:)我會發布我發現的。 –

0

好從用戶Kriggs解決越來越牀單推動他們的一些列表很大的幫助排序如下:

page.html中

<p>List of things:</p> 
<ul id="things"> 
<li>Loading...</li> 
</ul> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 

<script> 
// The code in this function runs when the page is loaded. 
$(function() { 
google.script.run.withSuccessHandler(showThings) 
    .getSheetsNames(); 
}); 

function showThings(sheetsName) { 
var list = $('#things'); 
list.empty(); 
for (var i = 0; i < sheetsName.length; i++) { 
list.append('<li>' + sheetsName[i] + '</li>'); 
} 
} 
</script> 

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

JavaScript.html

<script> 
window.addEventListener('load', function() { 
console.log('Page is loaded'); 
}); 
</script> 

Code.gs

function doGet(request) { 
return HtmlService.createTemplateFromFile('Page') 
    .evaluate() 
    .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

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


function getSheetsNames(){ 
var ss = SpreadsheetApp.openById("Spreadsheet ID here"); 
var sheetsName = []; 
var sheets = ss.getSheets(); 
for(var i = 0; i < sheets.length; i++){ 
    sheetsName .push(sheets[i].getName()) 
}; 
return sheetsName; 
} 

甲上述11種方法將生成Page.html,其中將創建電子表格中所有工作表的列表。這對我來說非常有用,希望每個人都可以使用它。我將繼續工作,如何做好相關dropwdown :)

相關問題