Home > Back-end >  Apps-script function with dynamic parameter
Apps-script function with dynamic parameter

Time:02-18

I am testing the app script platform and I have a doubt when using this code called from HTML file:

JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", "valueSearched")); ?>);

If I set the string value directly it works. If I try to pass a variable that is declared in it does not recognize it. How can I pass a JS variable to the app script function like next example?

let value_searched = "cars";
JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", value_searched)); ?>);

CodePudding user response:

Scriptlets like <?= ?> are used in html templates to load data from the server into html pages prior to rendering. If you want to pass data back to a server side function then you can use google.script.run and there are restrictions on the data types that you can pass.

google.script.run

CodePudding user response:

Here is an example of getting data from spreadsheet dynamically. I typically build my page and then use an anonymous function of the form (function () {}()); to get the data from spreadsheet and populate the HTML elements with the values.

Create an HTML file HTML_Demo:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <input id="A8SBwf" type="text">
    <input id="gNO89b" type="button" value="Click Me" onclick="buttonOnClick()">
    <script>
      function buttonOnClick() {
        try {
          google.script.run.withSuccessHandler( 
            function(response) {
              document.getElementById("A8SBwf").value = response;
            }
          ).getCellA1();
        }
        catch(err) {
          alert(err);
        }
      }
    </script>
  </body>
</html>

Then in Code.gs create the getCellA1:

function getCellA1() {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    var range = sheet.getRange("A1");
    return range.getValue();
  }
  catch(err) {
    return err.message;
  }
}
  • Related