需要帮助使用 Google Apps Script 更新 HTML Web Apps 中的下拉菜单 [英] Need help updating dropdowns in HTML Web Apps using Google Apps Script

查看:39
本文介绍了需要帮助使用 Google Apps Script 更新 HTML Web Apps 中的下拉菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我第一次在这里发帖,如果我需要编辑任何内容,请告诉我.

我正在开发一个程序,该程序运行在 Google 表格中导入的数据,并显示一个行".HTML web 应用程序中的数据,然后用户可以为显示的项目分配一个帐号(在下拉列表中找到),然后移到数据中的下一行.数据中的每一项都有一个ID号,用户根据这个ID号和数据的描述,在列表中选择合适的账号分配给数据.

问题是这些帐号有数百个,让用户滚动/搜索这些帐号以找到正确的帐号会非常乏味.

好消息是,只有某些帐户可以分配到 ID 号.我可以有效地对下拉列表进行排序,以仅显示可以分配给当前 ID 的帐户,从而使用户的工作更加轻松快捷.

但是,我不知道如何在 html 页面上加载项目后更新下拉列表.我能够获取当前的 ID 号并对帐户进行排序,只是无法更新下拉列表.

我已经粘贴了 code.gs 和 html/javascript 代码.我没有在 code.gs 文件中包含所有代码,因为其中一些与我的问题无关.

我正在使用 Materialise CSS.

代码.gs:

var url = "hidden";var ss = SpreadsheetApp.openByUrl(url);var masterWS = ss.getSheetByName("主列表");var 项目 = [];无功路线= {};Route.path = 函数(路由,回调){路线[路线] = 回调;}函数 doGet(e) {Route.path("summary", summaryPage);Route.path("edit", editPage);if(Route[e.parameters.v]){返回路线[e.parameters.v]();} 别的 {返回 editPage();}}函数summaryPage(){var tmp = HtmlService.createTemplateFromFile("summary");var sumList = showSummary();tmp.summaryList = sumList;返回 tmp.evaluate();}功能包括(文件名){返回 HtmlService.createHtmlOutputFromFile(fileName).getContent();}功能编辑页面(){var ss = SpreadsheetApp.openByUrl(url);var ws = ss.getSheetByName("GLAccounts");//创建下拉菜单并填充所有帐户选项var SSassetList = ws.getRange(2,1, getLastRowSpecial("A", "GLAccounts"),1).getValues();var htmlAssetList = SSassetList.map(function (r){return '<option>' + r[0] + '</option>';}).join('');var tmp = HtmlService.createTemplateFromFile("page");tmp.assetList = htmlAssetList;返回 tmp.evaluate();}函数calculateTotalEntries(){//Logger.log("完成:" + 完成);var lastRow = masterWS.getLastRow();var totalEntries = 0;var i = lastRow;while (masterWS.getRange(i, 1).getValue() != "交易日期"){一世 - ;总条目++;}masterWS.getRange("R1").setValue(totalEntries);masterWS.getRange("R2").setValue(lastRow);}功能用户点击(用户信息){var r = masterWS.getRange("P1").getValue();var GLAccount = userInfo.act;var lastRow = masterWS.getRange("R2").getValue();var totalEntries = masterWS.getRange("R1").getValue();if(!(masterWS.getRange("P3").getValue())){//Logger.log("Done parsing.Items length: " + items.length);if(r <= totalEntries - 1 ){masterWS.getRange("P4").setValue(lastRow - totalEntries + 1 + r);if(masterWS.getRange("P1").getValue() != 0){masterWS.getRange(lastRow - totalEntries + r, 8).setValue(GLAccount);}r = r + 1;masterWS.getRange("P1").setValue(r);} 别的 {//Logger.log("最后一个");masterWS.getRange("P3").setValue(true);masterWS.getRange(lastRow, 8).setValue(GLAccount);//返回错误;重置计数器();计算更改();}}}功能 showItem(){var row = masterWS.getRange("P4").getValue();返回项目:" + masterWS.getRange(row,5).getValue() + ;日期:" + slice(masterWS.getRange(row,1).getValue(), 13) + ;ID:"+ masterWS.getRange(row,6).getValue();}函数 getData(){var row = masterWS.getRange("P4").getValue();var id = "";id = masterWS.getRange(row,6).getValue().toString();var availaccounts = [];var IDSheet = ss.getSheetByName("MerchantCodes");var lastIDRow = IDSheet.getLastRow();var lastIDCol = 0;var currentRow = 0;for(var i = 6; i < lastIDRow; i++){if(IDSheet.getRange(i, 1).getValue().toString() == id){当前行 = i;休息;}}//Logger.log("ID: " + id + " @row " + i);for(var j = 1; j <10; j++){if(IDSheet.getRange(currentRow,j).getValue() != ""){lastIDCol = j;}}//Logger.log("Last Column for row " + i + ": " + lastIDCol);for(var r = lastIDCol - (lastIDCol - 3) + 1; r 

HTML:

Web 应用程序中显示的项目(根据数据发生变化)在标签中.下拉列表是使用标签填充的.这些标签中的数据来自 code.gs 文件中的 doGet() 和 editPage() 函数.

<头><base target="_top"><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"><?!= include("page-css");?><身体><div 类 = "容器"><!-- 打开容器--><div><!-- 打开行--><label>项目</label><p><span id="current"></span></p>

<!-- 关闭行--><div 类 =行"><!-- 打开行--><button id="btn2" class="btn wave-effect wave-light red darken-3" type="submit" name="action">开始</button>

<!-- 关闭行--><div 类 =行"><!-- 打开行--><div class="input-field col s6"><select id="glAcc"><option disabled selected>选择您的总帐帐户</option><?!= assetList;?></选择><label>总帐帐户</label>

<!-- 关闭行--><div 类 =行"><!-- 打开行--><button id="updDrop" class="btn wave-effect wave-light red darken-3" type="submit" name="action">Update Dropdown<i class="material-icons right">发送</i>

<!-- 关闭行--><div 类 =行"><!-- 打开行--><button id="btn" class="btn wave-effect wave-light red darken-3" type="submit" name="action">Submit<i class="material-icons right">发送</i>

<!-- 关闭行--><div 类 =行"><!-- 打开行--><a href="<?= ScriptApp.getService().getUrl(); ?>?v=summary" id="summary" class="btn wave-effect wave-light red darken-3" type="submit" name="action">转到摘要页面<i class="material-icons right">arrow_forward</i></a>

<!-- 关闭行-->

<!-- 关闭容器--><script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script><?!= include("page-js");?></html>

HTML JS 代码:





        
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆