我正在尝试从电子表格中获取数组并使用它来填充下拉列表。这是我的代码
code.gs
function doGet() {
var page = HtmlService.createTemplateFromFile('Index');
return page.evaluate()
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
function getArrayList(){
var ss = SpreadsheetApp.openById("1EjRFAYiMBw5BuNhFJRUVG4MpUjIIy8Oey5JLyiYxj3c");
var sheet = ss.getSheetByName("Nomes");
var values = sheet.getDataRange().getValues();
var array = [];
for each (var item in values){
array.push(item[0]);
}
return array
}
的index.html
<!DOCTYPE html>
<html>
<?!= include('jQuery'); ?>
<div class="demo" >
<form id="myForm">
<select id="selectNumber">
<option>Choose a number</option>
</select>
</form>
<?!= include('JavaScript'); ?>
</div>
</html>
JavaScript.html
<script>
var options = google.script.run.getArrayList();
console.log(options);
$('#selectNumber').empty();
$.each(options, function(i, p) {
$('#selectNumber').append($('<option></option>').val(p).html(p));
});
</script>
jQuery.html
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
如果不是在JavaScript.html文件上使用var options = google.script.run.getArrayList();
,而是传递文字数组var options = ["1","2","3"];
,我的代码就像魅力一样。
我知道问题是google.script.run
正在返回Undefined
,但我不知道我做错了什么。有人可以帮助我吗?
答案 0 :(得分:2)
这对你有用吗?
google.script.run.function()不返回值。因此options
的{{1}}为var options = google.script.run.getArrayList();
。使用withSuccessHandler()从Undefined
获取返回的值。以下是更新后的getArrayList()
。
JavaScript.html
答案 1 :(得分:0)
values是一个数组数组。要获得所需的所有数据,请执行以下操作:
var a=[];
for(var i=0;i<values.length;i++)
{
for(var j=0;j<values[0].length;j++)
{
a.push(values[i][j]);
}
}
或只返回值