Как передать данные формы в функцию на стороне клиента (google.scripts.run) и вернуть результат в HTML? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь взять идентификатор из формы и запустить этот идентификатор для функции в CODE.gs, которая проверяет электронную таблицу на наличие этого идентификатора и возвращает имя обратно в HTML. Прямо сейчас, когда он работает, он дает мне неопределенное.

HTML:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
    var result
    var id
    function getName() {
     var id = document.getElementById("SearchID").value;
      document.getElementById("SearchID").value = "";
     var result = google.script.run.findName(id);
     document.getElementById("NameDisp").innerHTML = result;
    }
    </script>
  </head>
  <body>
    Welcome to Verify. To begin, enter an ID below.<br><br>


    Student ID:<input type="text" id="SearchID" name="id" size="10">
    <input type="button" name="search" type="submit" value="Go" onclick="getName();";/>

    <div id="NameDisp"></div>
    <div id="grade"></div>

    <br><br>
    <input type="button" value="Close"
        onclick="google.script.host.close()" />
  </body>

CODE.GS

function findName(empID) {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.setActiveSheet(ss.getSheetByName('STU401'), true);
  var last=ss.getLastRow();
  var data=sh.getRange(1,1,last,5).getValues();  // create an array of data from columns A and B

  for(nn=0;nn<data.length;++nn){
    if (data[nn][0]==empID){break} ;// if a match in column A, break loop
      }
  var empName = data[nn][4]

return empName

}

1 Ответ

1 голос
/ 20 июня 2019

google.script.run вызывает функцию асинхронно, поэтому вы должны предоставить функцию обратного вызова, которой будет отправлено возвращаемое значение.

Вы предоставляете обратный вызов, используя withSuccessHandler, следующим образом:

google.script.run
.withSuccessHandler(function(result) {
  // this function is called if the function runs successfully
  // and the parameter "result" will have the value returned
  // by the findName function
  document.getElementById("NameDisp").innerHTML = result;

})
.findName(id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...