google.script.run返回undefined。我如何解决它?

时间:2017-09-20 21:21:24

标签: google-apps-script google-spreadsheet-api

我正在尝试从电子表格中获取数组并使用它来填充下拉列表。这是我的代码

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,但我不知道我做错了什么。有人可以帮助我吗?

2 个答案:

答案 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]);
}
}

或只返回值