2015-10-08 37 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 :)

相关问题