访问和操作脚本发布和触发器。借助此类,用户可以创建脚本触发器,并控制将脚本作为服务发布。
属性
属性 | 类型 | 说明 |
---|---|---|
Auth | Auth | 一个枚举,用于标识 Apps Script 能够通过触发的函数执行哪些类别的已获授权服务。 |
Authorization | Authorization | 用于表示脚本授权状态的枚举。 |
Event | Event | 表示触发的事件类型的枚举。 |
Installation | Installation | 一个枚举,表示脚本是如何作为插件安装给用户的。 |
Trigger | Trigger | 一个枚举,表示导致触发器触发的事件的来源。 |
Week | Weekday | 表示星期几的枚举。 |
方法
方法 | 返回类型 | 简介 |
---|---|---|
delete | void | 移除给定触发器,使其不再运行。 |
get | Authorization | 获取用于确定用户是否需要授权此脚本使用一项或多项服务,以及提供授权对话框的网址的对象。 |
get | String | 如果已授予 openid 范围,则为有效用户获取 Open |
get | Installation | 返回一个枚举值,用于指明脚本是如何作为插件安装给当前用户的(例如,用户是通过 Chrome 网上应用店自行安装的,还是域名管理员为所有用户安装的)。 |
get | String | 获取有效用户的 OAuth 2.0 访问令牌。 |
get | Trigger[] | 获取与当前项目和当前用户关联的所有可安装的触发器。 |
get | String | 获取脚本项目的唯一 ID。 |
get | Service | 获取用于控制将脚本发布为 Web 应用的对象。 |
get | Trigger[] | 仅针对此脚本或插件,获取给定文档中此用户拥有的所有可安装触发器。 |
get | Trigger[] | 获取给定表单中此用户拥有的所有可安装触发器,仅限此脚本或插件。 |
get | Trigger[] | 仅获取给定电子表格中此用户拥有的所有可安装触发器(仅限此脚本或插件)。 |
invalidate | void | 使有效用户执行当前脚本的授权失效。 |
new | State | 为可在回调 API(例如 OAuth 流程)中使用的状态令牌创建构建器。 |
new | Trigger | 开始创建可安装的触发器,该触发器在触发时会调用给定函数。 |
详细文档
delete Trigger(trigger)
移除给定触发器,使其不再运行。
// Deletes all triggers in the current project. const triggers = ScriptApp.getProjectTriggers(); for (let i = 0; i < triggers.length; i++) { ScriptApp.deleteTrigger(triggers[i]); }
参数
名称 | 类型 | 说明 |
---|---|---|
trigger | Trigger | 要删除的触发器。 |
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/script.scriptapp
get Authorization Info(authMode)
获取用于确定用户是否需要授权此脚本使用一项或多项服务,以及提供授权对话框的网址的对象。如果脚本作为使用可安装的触发器的插件发布,则可以使用此信息来控制对用户缺少必要授权的代码段的访问权限。或者,该插件可以要求用户打开授权对话框的网址以解决问题。
var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL); status = authInfo.getAuthorizationStatus(); url = authInfo.getAuthorizationUrl();
参数
名称 | 类型 | 说明 |
---|---|---|
auth | Auth | 请求授权信息的授权模式;在几乎所有情况下,auth 的值都应为 Script ,因为没有其他授权模式需要用户授予授权 |
返回
Authorization
- 一个对象,可提供有关用户授权状态的信息
get Identity Token()
如果已授予 openid
范围,则为有效用户获取 Openhttps://www.googleapis.com/auth/userinfo.email
或 https://www.googleapis.com/auth/userinfo.profile
镜,以便在令牌中返回其他用户信息。
返回的 ID 令牌是经过编码的 JSON Web 令牌 (JWT),必须对其进行解码才能从中提取信息。以下示例展示了如何解码令牌并提取有效用户的 Google 个人资料 ID。
const idToken = ScriptApp.getIdentityToken(); const body = idToken.split('.')[1]; const decoded = Utilities .newBlob( Utilities.base64Decode(body), ) .getDataAsString(); const payload = JSON.parse(decoded); Logger.log(`Profile ID: ${payload.sub}`);
返回
String
- 身份令牌(如果有);否则为 null
。
get Installation Source()
返回一个枚举值,用于指明脚本是如何作为插件安装给当前用户的(例如,用户是通过 Chrome 网上应用店自行安装的,还是域名管理员为所有用户安装的)。
返回
Installation
- 安装来源。
get OAuth Token()
获取有效用户的 OAuth 2.0 访问令牌。如果脚本的 OAuth 范围足以授权通常需要使用自己的 OAuth 流程的其他 Google API(例如 Google Picker),则脚本可以改为传递此令牌,从而绕过第二次授权提示。令牌会在一段时间(至少几分钟)后过期;脚本应处理授权失败,并在需要时调用此方法以获取新的令牌。
此方法返回的令牌仅包含脚本当前需要的范围。返回的令牌中不包含之前已获授权但脚本不再使用的范围。如果除了脚本本身所需的 OAuth 范围之外,还需要其他 OAuth 范围,则可以在脚本的清单文件中指定这些范围。
返回
String
- OAuth 2.0 令牌的字符串表示法。
get Project Triggers()
get Script Id()
get Service()
获取用于控制将脚本发布为 Web 应用的对象。
// Get the URL of the published web app. const url = ScriptApp.getService().getUrl();
返回
Service
- 用于观察和控制将脚本发布为 Web 应用的对象。
get User Triggers(document)
仅针对此脚本或插件,获取给定文档中此用户拥有的所有可安装触发器。此方法无法用于查看附加到其他脚本的触发器。
const doc = DocumentApp.getActiveDocument(); const triggers = ScriptApp.getUserTriggers(doc); // Log the handler function for the first trigger in the array. Logger.log(triggers[0].getHandlerFunction());
参数
名称 | 类型 | 说明 |
---|---|---|
document | Document | 可能包含可安装的触发器的 Google 文档文件。 |
返回
Trigger[]
- 此用户在给定文档中拥有的触发器数组。
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/script.scriptapp
get User Triggers(form)
获取给定表单中此用户拥有的所有可安装触发器,仅限此脚本或插件。此方法无法用于查看附加到其他脚本的触发器。
const form = FormApp.getActiveForm(); const triggers = ScriptApp.getUserTriggers(form); // Log the trigger source for the first trigger in the array. Logger.log(triggers[0].getTriggerSource());
参数
名称 | 类型 | 说明 |
---|---|---|
form | Form | 可能包含可安装的触发器的 Google 表单文件。 |
返回
Trigger[]
- 此用户在给定表单中拥有的触发器数组。
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/script.scriptapp
get User Triggers(spreadsheet)
仅针对此脚本或插件,获取给定电子表格中此用户拥有的所有可安装触发器。此方法无法用于查看附加到其他脚本的触发器。
const ss = SpreadsheetApp.getActiveSpreadsheet(); const triggers = ScriptApp.getUserTriggers(ss); // Log the event type for the first trigger in the array. Logger.log(triggers[0].getEventType());
参数
名称 | 类型 | 说明 |
---|---|---|
spreadsheet | Spreadsheet | 一个可能包含可安装的触发器的 Google 表格文件。 |
返回
Trigger[]
- 给定电子表格中此用户拥有的触发器的数组。
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/script.scriptapp
invalidate Auth()
使有效用户执行当前脚本的授权失效。用于使当前脚本的所有权限失效。对于标记为一次性授权的函数,此功能尤为有用。由于一次性授权函数只能在脚本获得授权后首次运行时调用,因此如果您想在之后执行操作,则必须撤消脚本拥有的所有授权,以便用户再次看到授权对话框。
ScriptApp .invalidateAuth();
抛出
Error
- 失效失败时
new State Token()
为可在回调 API(例如 OAuth 流程)中使用的状态令牌创建构建器。
// Generate a callback URL, given the name of a callback function. The script // does not need to be published as a web app; the /usercallback URL suffix // replaces /edit in any script's URL. function getCallbackURL(callbackFunction) { // IMPORTANT: Replace string below with the URL from your script, minus the // /edit at the end. const scriptUrl = 'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz'; const urlSuffix = '/usercallback?state='; const stateToken = ScriptApp.newStateToken() .withMethod(callbackFunction) .withTimeout(120) .createToken(); return scriptUrl + urlSuffix + stateToken; }
在大多数 OAuth2 流程中,state
令牌会直接传递给授权端点(而非作为回调网址的一部分),然后授权端点会将其作为回调网址的一部分传递。
例如:
- 脚本会将用户重定向到 OAuth2 授权网址:
https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters
- 用户点击“授权”,OAuth2 授权页面会将用户重定向回
https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants
- 上述重定向(返回
http://script.google.com/...
)会导致浏览器向/usercallback
发出请求,后者会调用State
指定的方法。Token Builder.withMethod(method)
返回
State
- 用于继续状态令牌构建流程的对象。
new Trigger(functionName)
开始创建可安装的触发器,该触发器在触发时会调用给定函数。
// Creates an edit trigger for a spreadsheet identified by ID. ScriptApp.newTrigger('myFunction') .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3') .onEdit() .create();
参数
名称 | 类型 | 说明 |
---|---|---|
function | String | 在触发器触发时调用的函数。您可以使用所包含的库(例如 Library.libFunction1 )中的函数。 |
返回
Trigger
- 用于继续触发器构建流程的对象。
授权
使用此方法的脚本需要获得以下一个或多个范围的授权:
-
https://www.googleapis.com/auth/script.scriptapp