google.script.run 返回未定义。我如何解决它?
google.script.run is returning undefined. How do I fix it?
我正在尝试从电子表格中获取数组并使用它来填充下拉列表。这是我的代码
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
,但我不知道我做错了什么。有人可以帮我吗?
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]);
}
}
或只是 return 个值
这对你有用吗?
google.script.run.function() 没有 return 值。所以 var options = google.script.run.getArrayList();
的 options
是 Undefined
。使用 withSuccessHandler() 从 getArrayList()
获取 returned 值。以下是更新后的 JavaScript.html
.
<script>
google.script.run.withSuccessHandler(sample).getArrayList();
function sample(options) {
$('#selectNumber').empty();
$.each(options, function(i, p) {
$('#selectNumber').append($('<option></option>').val(p).html(p));
});
}
</script>
我正在尝试从电子表格中获取数组并使用它来填充下拉列表。这是我的代码
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
,但我不知道我做错了什么。有人可以帮我吗?
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]);
}
}
或只是 return 个值
这对你有用吗?
google.script.run.function() 没有 return 值。所以 var options = google.script.run.getArrayList();
的 options
是 Undefined
。使用 withSuccessHandler() 从 getArrayList()
获取 returned 值。以下是更新后的 JavaScript.html
.
<script>
google.script.run.withSuccessHandler(sample).getArrayList();
function sample(options) {
$('#selectNumber').empty();
$.each(options, function(i, p) {
$('#selectNumber').append($('<option></option>').val(p).html(p));
});
}
</script>