具有动态参数的 Apps 脚本函数

Apps-script function with dynamic parameter

我正在测试应用程序脚本平台,在使用从 HTML 文件调用的这段代码时我有疑问:

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

如果我直接设置字符串值就可以了。 如果我尝试传递一个在其中声明的变量,它不会识别它。我如何像下一个示例一样将 JS 变量传递给应用程序脚本函数?

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

<?= ?> 之类的 Scriptlet 在 html 模板中用于在呈现之前将数据从服务器加载到 html 页面。如果你想将数据传回服务器端函数,那么你可以使用 google.script.run 并且对你可以传递的数据类型有限制。

google.script.run

下面是一个从电子表格中动态获取数据的例子。我通常构建我的页面,然后使用 (function () {}()); 形式的匿名函数从电子表格中获取数据并使用这些值填充 HTML 元素。

创建一个 HTML 文件 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>

然后在 Code.gs 中创建 getCellA1:

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