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

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -