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 脚本函数。
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function doSomething() {
Logger.log('I was called!');
}
<!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)
,或者提供一个不执行任何操作的失败处理程序。
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
// 'got' instead of 'get' will throw an error.
return GmailApp.gotInboxUnreadCount();
}
<!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>
参数
返回
google.script.run
- 此“脚本运行程序”用于串联
withSuccessHandler(function)
设置在服务器端函数成功返回时运行的回调函数。服务器的 返回值将作为第一个参数传递给函数,而 用户对象(如果有)作为第二个参数进行传递。
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
return GmailApp.getInboxUnreadCount();
}
<!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
运算符构造而成。
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getEmail() {
return Session.getActiveUser().getEmail();
}
<!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()" />
<input type="button" value="Not Clicked"
onclick="google.script.run
.withSuccessHandler(updateButton)
.withUserObject(this)
.getEmail()" />
</body>
</html>
参数
名称 | 类型 | 说明 |
---|---|---|
object | Object | 要作为第二个参数传递的对象
成功和失败处理程序因为用户对象不会发送到服务器
所遵循的参数和返回值的限制
服务器调用。但是,用户对象不能是构造的对象
使用 new 运算符 |
返回
google.script.run
- 此“脚本运行程序”用于串联