¿Cómo ejecuto las funciones del lado del servidor usando HtmlService?

Soy nuevo en programación y estoy tratando de conectar un par de botones con jQuery usando Google-apps-script. Tengo una hoja de cálculo y un menú añadido a la misma que abre un cuadro de diálogo de HtmlService.

En el cuadro de diálogo Tengo dos botones, uno cierra el cuadro de diálogo y el otro ejecuta una función de servidor, que por ahora solo escribe "hola mundo a la celda a1. El botón" cerrar "funciona perfectamente, sin embargo, la" actualización "no parece funcionar. hacer nada. No estoy exactamente seguro de cómo depurar el lado del cliente.

<script>
  $(document).ready(function(){

      $("#update").click(function (){
        var params = {}
        params.url = $("#url").val()
        params.owner = $("#owner").val()
        params.type = type
        google.script.run.update(params);
      });

      $("#close").click(function(){
      // This one works. why not the "update" button???
        google.script.host.close()
      })

  })

 </script>
 <title>AJAXtabs.html</title>
  </head>
<body>
<div id="content">
  <table border="1">
    <tr>
      <th><?= type ?>URL</th>
      <td><input type="text" id="url" name="url"></td>
    </tr>
    <tr>
      <th>New Owner email</th>
      <td><input type="text" id="ownerEmail" name="ownerEmail"></td>
    </tr>
    <tr>
      <td colspan="2" id="buttonRow" ><button id="update" type="button" >Update</button><button id="close" type="button">Close</button></td>
    </tr>
  </table>
</div>
<div id="message">
</div>
</body>
</html>
Extracto de Code.gs
function update(params){
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
      var row = sheet.getLastRow()
      var col = sheet.getLastColumn()
      sheet.getRange('a1').setValue('Hello world!!')
    }
    function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [];
   // When the user clicks on "addMenuExample" then "Menu Entry 1", the function function1 is
   // executed.
   menuEntries.push({name: "Set file", functionName: "fileUi"});
  menuEntries.push(null); // line separator
  menuEntries.push({name: "Set Folder", functionName: "folderUi"});

  ss.addMenu("Setters", menuEntries);
}

   function fileUi(){
 var htmlApp = HtmlService.createTemplateFromFile('View template')
 htmlApp.type = 'File';

   SpreadsheetApp.getActiveSpreadsheet().show(htmlApp.evaluate().setHeight(300).setTitle('Chan ge Owner'));
 }

   function folderUi(){
 var htmlApp = HtmlService.createTemplateFromFile('View template')
  htmlApp.type = 'Folder'

   SpreadsheetApp.getActiveSpreadsheet().show(htmlApp.evaluate());
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta