Изо всех сил пытается получить функцию, вызванную «onclick» в Google Scripts - PullRequest
0 голосов
/ 04 апреля 2020

В настоящее время я внедряю форму в Google Scripts. К сожалению, я изо всех сил пытаюсь вызвать функцию, нажав на кнопку html. Вот как это выглядит:

Пользовательский интерфейс формы

После нажатия кнопки «Отправить» я хочу вызвать функцию для передачи параметров на сервер, подлежащий обработке. Для этого я реализовал функцию form_data () в html -части. Код выглядит следующим образом:

.gs-файл (выдержка):

function showPrompt() {

  var ui = SpreadsheetApp.getUi(); 

  var result = ui.prompt(
      'Please enter the Problem ID: ',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var rfsId = result.getResponseText();
  if (button == ui.Button.OK) {
    this.radiosOnADialog();
    //getData(rfsId);

  } else if (button == ui.Button.CANCEL) {


  } else if (button == ui.Button.CLOSE) {

  }

}

function radiosOnADialog() {

  var ui = SpreadsheetApp.getUi(); 

  console.log('Hello World');
  Logger.log('Hi');

  //Call the HTML file and set the width and height
  var html = HtmlService.createHtmlOutputFromFile("testUI")
    .setWidth(200)
    .setHeight(150);

  //Display the dialog
  var dialog = ui.showModalDialog(html, "Select Output Language");

}

function runsies(values){
  //Display the values submitted from the dialog box in the Logger. 
  Logger.log(values);
};

. html -файл:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
  </head>
  <body>
    <div>

        <table>
          <col width="80">
          <col width="50">
          <tr>
            <th><strong>Language</strong></th>
            <th><strong></strong></th>
          </tr>
          <tr>
            <td>English </td>
            <td><input type="radio" name="english" value="en"></td>
          </tr>
          <tr>
            <td>German </td>
            <td><input type="radio" name="german" value="de"></td>
          </tr>
        </table>
        <button  onclick="form_data()"> Submit </button>
        <button  onclick="google.script.host.close()"> Close </button>


    </div>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
    </script>
    <script>
      function form_data(){
       Logger.log("Values are:");
        var values = [{
          "english":$("input[name=english]:checked").val(),
          "german":$("input[name=german]:checked").val(),
        }];
        google.script.run.withSuccessHandler(closeIt()).runsies(values);
      };

      function closeIt(){
        google.script.host.close()
      };

    </script>
  </body>
</html>

1 Ответ

1 голос
/ 04 апреля 2020

Вам не хватает кавычек в функции form_data.

До:

function form_data(){
       Logger.log("Values are:");
        var values = [{
          "english":$("input[name=english]:checked").val(),
          "german":$("input[name=german]:checked").val(),
        }];
        google.script.run.withSuccessHandler(closeIt()).runsies(values);
      };

После:

function form_data(){
       Logger.log("Values are:");
        var values = [{
          "english":$("input[name='english']:checked").val(),
          "german":$("input[name='german']:checked").val(),
        }];
        google.script.run.withSuccessHandler(closeIt()).runsies(values);
      };

Обратите внимание на добавленные одиночные кавычки здесь :

"english":$("input[name='english']:checked").val(),

А здесь:

"german":$("input[name='german']:checked").val(),
...