google.script.run 是一个异步客户端 JavaScript API,可通过
  可调用服务器端 Apps 脚本的 HTML 服务网页
  函数。从客户端与 Google 文档、表格或表单中的对话框或边栏互动
  代码,请使用 google.script.host。有关详情,请参阅
  与服务器功能通信指南
  。
方法
| 方法 | 返回类型 | 简介 | 
|---|---|---|
| myFunction(...)(任何服务器端函数) | void | 使用相应名称执行服务器端 Apps 脚本函数。 | 
| withFailureHandler(function) | google.script.run | 设置在服务器端函数引发异常时要运行的回调函数。 | 
| withSuccessHandler(function) | google.script.run | 设置在服务器端函数成功返回时运行的回调函数。 | 
| withUserObject(object) | google.script.run | 设置一个对象,作为第二个参数传递给成功和失败处理程序。 | 
详细文档
myFunction(...)(任何服务器端函数)
使用相应名称执行服务器端 Apps 脚本函数。
Code.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}
function doSomething() {
  Logger.log('I was called!');
}Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      google.script.run.doSomething();
    </script>
  </head>
  <body>
  </body>
</html>参数
| 名称 | 类型 | 说明 | 
|---|---|---|
| ... | 大多数类型都是合法的,但 Date、Function、
  或form之外的 DOM 元素;查看说明 | 法律参数是 JavaScript Number、Boolean、String或null以及由基元组成的 JavaScript 对象和数组,
  对象和数组。网页中的form元素也可作为参数,但
  它必须是函数的唯一参数。如果您尝试传递Date、Function、DOM 元素(form或其他元素)
  禁止的类型,包括对象或数组内禁止的类型。可创造圆形物体的物体
  引用也将失败,且数组中未定义的字段变为null。请注意,
  传递给服务器的对象将成为原始对象的副本。如果服务器函数收到一个
  对象并更改其属性时,客户端上的属性不会受到影响。 | 
返回
void - 此方法是异步的,不直接返回;不过,
  服务器端函数可以将值作为传递给
  成功处理程序;此外,返回类型还受
  与参数类型具有相同的限制,但 form 元素不合法
  返回值类型
withFailureHandler(function)
设置在服务器端函数引发异常时要运行的回调函数。通过
  Error
  对象会作为第一个参数传递给函数,而
  用户对象(如果有)作为第二个参数进行传递。不包含
  一个故障处理程序,JavaScript 控制台会记录故障。要覆盖它,请调用
  withFailureHandler(null),或者提供一个不执行任何操作的失败处理程序。
Code.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
  // 'got' instead of 'get' will throw an error.
  return GmailApp.gotInboxUnreadCount();
}Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function onFailure(error) {
        var div = document.getElementById('output');
        div.innerHTML = "ERROR: " + error.message;
      }
      google.script.run.withFailureHandler(onFailure)
          .getUnreadEmails();
    </script>
  </head>
  <body>
    <div id="output"></div>
  </body>
</html>参数
| 名称 | 类型 | 说明 | 
|---|---|---|
| function | Function | 客户端回调函数
  在服务器端函数抛出异常时运行;该 Error对象会作为第一个参数传递给函数,而
  用户对象(如果有)作为第二个参数传递 | 
返回
google.script.run - 此“脚本运行程序”用于串联
withSuccessHandler(function)
设置在服务器端函数成功返回时运行的回调函数。服务器的 返回值将作为第一个参数传递给函数,而 用户对象(如果有)作为第二个参数进行传递。
Code.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
  return GmailApp.getInboxUnreadCount();
}Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function onSuccess(numUnread) {
        var div = document.getElementById('output');
        div.innerHTML = 'You have ' + numUnread
            + ' unread messages in your Gmail inbox.';
      }
      google.script.run.withSuccessHandler(onSuccess)
          .getUnreadEmails();
    </script>
  </head>
  <body>
    <div id="output"></div>
  </body>
</html>参数
| 名称 | 类型 | 说明 | 
|---|---|---|
| function | Function | 客户端回调函数 如果服务器端函数成功返回结果,则运行 系统会将服务器的返回值 函数作为第一个参数,用户对象(如果有) 作为第二个参数传递 | 
返回
google.script.run:此“脚本运行程序”用于串联
withUserObject(object)
设置一个对象,作为第二个参数传递给成功和失败处理程序。此“用户
  object",不要与
  User 类 - 允许回调
  函数会响应客户端与服务器联系的上下文。因为用户对象
  不会发送到服务器,它们既不受参数限制,也不会返回
  服务器调用的值。但是,用户对象不能是对象
  使用 new 运算符构造而成。
Code.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index');
}
function getEmail() {
  return Session.getActiveUser().getEmail();
}Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function updateButton(email, button) {
        button.value = 'Clicked by ' + email;
      }
    </script>
  </head>
  <body>
    <input type="button" value="Not Clicked"
      onclick="google.script.run
          .withSuccessHandler(updateButton)
          .withUserObject(this)
          .getEmail()" />
  </body>
</html>参数
| 名称 | 类型 | 说明 | 
|---|---|---|
| object | Object | 要作为第二个参数传递的对象
  成功和失败处理程序因为用户对象不会发送到服务器
  所遵循的参数和返回值的限制
  服务器调用。但是,用户对象不能是构造的对象
  使用 new运算符 | 
返回
google.script.run:此“脚本运行程序”用于串联