开发者问题收集

Google Apps 脚本 - 返回未定义

2022-07-11
1016

我想做什么:

  1. 从两个文本框(姓氏和名字)提交值
  2. 在 Code.gs 中处理这两个值(创建一个“Hello LastName, FirstName”格式的字符串)
  3. 返回处理后的值并将其显示到第三个文本框。

请注意,如果数据处理是在 html 中,我可以做到这一点,但我想在 Code.gs 中练习这样做,因为我将来想摆弄 Google 表格,我只是想一点一点地研究它。但是当我在 Code.gs 中传输处理时,返回的数据是“未定义”。非常感谢您的帮助。非常感谢!

当前代码:

Code.gs:

function doGet(e) {
  return HtmlService
    .createTemplateFromFile('Index').evaluate();
}

function getData(a,b){
  var lastName = a;
  var firstName = b;
  var txtResult = "Hello " + lastName + ", " + firstName;
  return txtResult;
}

Index.html:

<!DOCTYPE html>
<html>
  <body>
    <div>
      <label>Enter Last Name</label>
      <input type="text" id="txtLastName"/></br>
      <label>Enter First Name</label>
      <input type="text" id="txtFirstName"/></br>
      <button id="btnProcess">Process</button></br>
      <input type="text" id="txtResult"/>
    </div>
  </body>

  <script>
    document.getElementById("btnProcess").addEventListener("click", processData);                
    function processData() {
      var lastName = document.getElementById("txtLastName").value
      var firstName = document.getElementById("txtFirstName").value
      document.getElementById("txtResult").value = google.script.run.getData(lastName,firstName);
    }
  </script>
    
</html>
1个回答

您缺少 withSuccessHandler withFailureHandler (可选)。

<script>
  document.getElementById("btnProcess").addEventListener("click", processData);                
  function processData() {
    var lastName = document.getElementById("txtLastName").value
    var firstName = document.getElementById("txtFirstName").value
    google.script.run.withFailureHandler(errorFunction).withSuccessHandler(successFunction).getData(lastName,firstName);
  }

  function errorFunction(errorMsg) {
    console.log("Something went wrong");
  }

  function successFunction(txtResult) {
    document.getElementById("txtResult").value = txtResult;
  }
</script>
Alfredo
2022-07-11