【问题标题】:Get MultiSelect Option values using google app script使用谷歌应用脚​​本获取多选选项值
【发布时间】:2019-07-09 14:07:10
【问题描述】:

我在 google 工作表中有一个列表,可以选择为 html 中的选项。选择设置为多个。如何将选定的值放置在谷歌工作表的单个单元格中?

这里是谷歌表格的链接:

https://docs.google.com/spreadsheets/d/1lEfzjG1zzJVPMN8r-OpeZm6q9_IqSwk9DNCEY-q7ozY/edit?usp=sharing

这是我的多个html代码:

   <div class="input-field col s4">
   <select id="posApp" multiple="multiple">
   <option value="" disabled>Choose your preferred app</option>
   <?!= list2; ?> 
   </select>
   <label>Select App</label>
   </div> <!-- CLOSE TIME FIELD -->
   </div> <!-- CLOSE ROW -->

对于谷歌脚本(从谷歌表中制作选择列表):

function doGet(e){

  var ss = SpreadsheetApp.openByUrl(url);
  var ws2 = ss.getSheetByName("Pos_App");
  var list2 = ws2.getRange(1,1,ws2.getRange("A1").getDataRegion().getLastRow(),1).getValues();
  var htmlListArray2 = list2.map(function(r){return '<option>' + r[0] + '</option>'; }).join('');

  var tmp = HtmlService.createTemplateFromFile("page");
  tmp.list2 = htmlListArray2;
  return tmp.evaluate();

}

对于 JavaScript,使用 Materialize CSS 中的 Select 初始化和 @Cooper 中的代码:

<script>
     document.addEventListener('DOMContentLoaded', function() {
       var timeSelect = document.querySelectorAll('select');
       M.FormSelect.init(timeSelect);

     document.getElementById("posApp").addEventListener("change",selectMulti);     



   function selectMulti(){
   google.script.run.withSuccessHandler(updateSelect).getSelectOptions();

   }

   function updateSelect(vA){
    var select = document.getElementById("posapp"); 
    for(var i=0;i<vA.length;i++)
    {
    select.options[i] = new Option(vA[i],vA[i]);
    }
   }

     });
</script>

然后谷歌脚本中的附加功能也来自@Cooper:

function getSelectOptions()
{
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Open_Pos");
  var posRg = ws.getRange(1, 1, ws.getLastRow(), 1).getValues().join().split(",");
  //return rg.getValue().split(',');
  return posRg;
}

但不幸的是,它仍然不成功。虽然 HTML 中的输出是所有选定的数据,但当我单击提交按钮时,只有选择中的第一项保存在 google 工作表中。我也不知道如何使用 MaterializeCSS 中的.getSelectedValues();。提前感谢您的帮助。

【问题讨论】:

  • 您能否分享您的代码以了解您的尝试?否则很难告诉你如何帮助你。
  • 对不起,我是新来的,所以我不能像其他帖子一样正确发布代码。
  • 没关系,你可以编辑你的问题,粘贴代码,选择它然后点击编辑器中的{}按钮,它会为你提供正确的格式

标签: javascript html google-apps-script materialize


【解决方案1】:

试试这个:

html:

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

    <select id="posApp" multiple="multiple"> <option value="" disabled>Choose your Position</option>

code.gs

function getSelectOptions()
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Options');
  var rg=sh.getRange('A1');
  return rg.getValue().split(',');
}

javascript

function updateSelect(vA){
  var select = document.getElementById("posapp"); 
  for(var i=0;i<vA.length;i++)
  {
    select.options[i] = new Option(vA[i],vA[i]);
  }
}

$(function() {
        google.script.run
          .withSuccessHandler(updateSelect)
          .getSelectOptions();
      });

【讨论】:

  • 我按照您的指示进行操作,只是我将 google.script.run.withSuccessHandler(updateSelect).getSelectOptions(); 放在使用 document.getElementById("posApp").addEventListener("input",selectMulti); 的函数下,但仍然无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
相关资源
最近更新 更多