Google html从电子表格

时间:2015-07-21 14:17:46

标签: html forms list drop-down-menu google-apps-script

我正在尝试根据此处发布的问题Previous questioe posted by @Kron011从电子表格中填充一个列表,我有点挣扎。我将这些行添加到我的.gs文件中:

function getMenuListOne(){
return SpreadsheetApp.openbyId('spreadsheet_key').getSheetByName('sheet1')
.getRange(row, column, numRows, numColumns).getValues();
}

我将这些行添加到我的HTML文件中:

  <select id="menu">
  <option></option>
  <option>Google Chrome</option>
  <option>Firefox</option>
  </select>


<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)
      .getMenuListFromSheet();
  google.script.run.withSuccessHandler(showMenu)
      .getMenuListFromSheet();
});

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

function showMenu(menuItems) {
  var list = $('#menu');
  list.find('option').remove();  // remove existing contents

  for (var i = 0; i < menuItems.length; i++) {
    list.append('<option>' + menuItems[i] + '</option>');
  }
}

</script>

一如既往,我痛苦有限的经历阻碍了我的努力。我可以看到一个新的菜单框并显示我想要的正确结果,但我无法获得一个现有的框来显示相同​​的列表。现有的盒子代码目前是:

<input type="text" name="site" list="depotslist" id="site" class="form-control" placeholder="Select depot/site" required>
                    <datalist id="depotslist">
                    <option value="one">
                    <option value="two">
                    </datalist>

但有人可以指出我正确的方向,我需要更改现有菜单框的哪些部分以获得两位进行通信?

7月23日更新

我添加了以下代码,以便从另一个来源获取另一个列表:

    $(function() {
  google.script.run.withSuccessHandler(showThings2)
      .getMenuListSources();
  google.script.run.withSuccessHandler(showMenu2)
      .getMenuListSources();
});

function showThings2(things2) {
  var list2 = $('#things2');
  list.empty();
  for (var i = 0; i < things2.length; i++) {
    list2.append('<li>' + things2[i] + '</li>');
  }
}

function showMenu2(menuItems2) {
  var list2 = $('#menu2');
  var box2 = $('#sourcelist');
  list2.find('option').remove();  // remove existing contents

  for (var i = 0; i < menuItems2.length; i++) {
    list2.append('<option>' + menuItems2[i] + '</option>');
    box2.append('<option>' + menuItems2[i] + '</option>');
  }
}

在.gs文件中使用这些行:

    var Bvals = SpreadsheetApp.openById(ssKey).getSheetByName('SourceCodes').getRange("C3:C").getValues();
var Blast = Avals.filter(String).length;
return SpreadsheetApp.openById(ssKey).getSheetByName('SourceCodes').getRange(3,3,Blast,1).getValues();

1 个答案:

答案 0 :(得分:1)

它与您使用元素“menu”的操作类似。使用jquery,您可以选择包含选项的框的元素,然后附加新值。在这种情况下,它的id是:depotslist。

function showMenu(menuItems) {
  var list = $('#menu');
  var box =  $('#depotslist');
  list.find('option').remove();  // remove existing contents

  for (var i = 0; i < menuItems.length; i++) {
    list.append('<option>' + menuItems[i] + '</option>');
    box.append('<option>' + menuItems[i] + '</option>');

  }

在这种情况下,与元素“菜单”的区别在于内容将保留。这意味着在框中您将看到选项“一,二”以及您添加的内容,因为我们没有删除内容,如此行

list.find('option').remove();

我不确定这是不是你想要做的,如果这没有用,请告诉我。