Usage of google.script.run in custom menues -
i'm trying implement custom html-menu in google sheets. there drop-down list populated values named range via function getvaluesforrngname(). upon selection of value in list, script should retrieve range sheet again, determine price , populate price text box serviceprice. however, problem line of code "values = google.script.run.getvaluesforrngname('servicelist');" not retrieving anything.
could please suggest how make work?
html code provided below:
<div> <form> <table> <tr> <td>select service:</td> <td><select name="servicesmd" id="servicesmd" onchange="retrieveserviceprice(this);"></select></td> </tr> <tr> <td><br/><br/> <script type="text/javascript"> function onsuccess(values) { var option, dropdown; (i = 1; < values.length; i++) { dropdown = document.getelementbyid("servicesmd"); option = document.createelement("option"); dropdown.options.add(option); option.value = values[i][0]; // service id option.text = values[i][1]; // service name } } function populate() { google.script.run.withsuccesshandler(onsuccess).getvaluesforrngname('servicelist'); } </script> service price: <input id="serviceprice" name="serviceprice" type="text" /><br/><br/> </tr> </table> </form> </div> <script> window.addeventlistener('load', populate()); function retrieveserviceprice(element) { var selectionindex; var values; values = google.script.run.getvaluesforrngname('servicelist'); selectionindex = document.forms[0].action = element.options[element.selectedindex].getattribute("value"); document.getelementbyid("serviceprice").value = values[selectionindex][3]; // should retrieve price of service } </script> gas code below:
function onopen() { spreadsheetapp.getui() // or documentapp or formapp. .createmenu('custom menu') .additem('show custom menu', 'openservicesalesform') .addtoui(); } function openservicesalesform() { var html = htmlservice.createhtmloutputfromfile('page') .setwidth(600) .setheight(400); spreadsheetapp.getui().showmodaldialog(html, 'service sales form'); } // rangelist function getvaluesforrngname(rngname) { var rngvalues = spreadsheetapp.getactivespreadsheet().getrangebyname(rngname).getvalues(); return rngvalues; }
assuming that, columns in range servicelist in following order service id | service name | price
<script> window.addeventlistener('load', populate()); var serviceid; function retrieveserviceprice(element) { serviceid = element; google.script.run.withsuccesshandler(injectvaluesintohtml).getvaluesforrngname('servicelist'); } window.injectvaluesintohtml = function(values) { (var = 0; < values.length; i++) { if (serviceid == values[i][0]) { document.getelementbyid("serviceprice").value = values[i][2]; // should retrieve price of service } } } </script> html:
<select name="servicesmd" id="servicesmd" onchange="retrieveserviceprice(this.value);">
Comments
Post a Comment