通过高级聊天服务,您可以在 Apps 脚本中使用 Google Chat API。借助此 API,脚本可以查找、创建和修改 Chat 聊天室、在聊天室中添加或移除成员,以及阅读或发布包含文字、卡片、附件和回应的消息。
前提条件
- 在 Google Cloud 控制台的 Chat API 配置页面上配置的 Apps 脚本 Google Chat 应用。应用的 Apps 脚本项目必须使用标准 Google Cloud 项目,而不是为 Apps 脚本项目自动创建的默认项目。如需创建兼容的 Google Chat 应用,请参阅使用 Apps 脚本构建 Google Chat 应用。
- 为 Chat 应用配置了身份验证。代表用户执行操作需要进行用户身份验证。在 Chat 应用中执行操作需要使用服务帐号进行应用身份验证。如需了解 Chat API 方法支持哪种身份验证形式,请参阅 Google Chat API 调用所需的身份验证类型。
参考
如需详细了解此服务,请参阅 Chat API 参考文档。与 Apps 脚本中的所有高级服务一样,Chat 服务使用与公共 API 相同的对象、方法和参数。
示例代码
这些示例展示了如何使用高级服务执行常见的 Google Chat API 操作。
发布包含用户凭据的消息
以下示例演示了如何代表用户向 Chat 聊天室发布消息。
在 Apps 脚本项目的
appsscript.json
文件中添加chat.messages.create
授权范围:"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.create" ]
在 Apps 脚本项目的代码中添加一个与下面类似的函数:
发布包含应用凭据的消息
以下示例演示了如何代表应用将消息发布到 Chat 聊天室。将高级 Chat 服务与服务帐号搭配使用时,您无需在 appsscript.json
中指定授权范围。如需详细了解如何使用服务帐号进行身份验证,请参阅以 Google Chat 应用的身份进行身份验证。
创建聊天室
以下示例演示了如何获取有关 Chat 聊天室的信息。
在 Apps 脚本项目的
appsscript.json
文件中添加chat.spaces.readonly
授权范围:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.readonly" ]
在 Apps 脚本项目的代码中添加一个与下面类似的函数:
创建聊天室
以下示例演示了如何创建 Chat 聊天室。
在 Apps 脚本项目的
appsscript.json
文件中添加chat.spaces.create
授权范围:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
在 Apps 脚本项目的代码中添加一个与下面类似的函数:
列表成员资格
以下示例演示了如何列出 Chat 聊天室的所有成员。
在 Apps 脚本项目的
appsscript.json
文件中添加chat.memberships.readonly
授权范围:"oauthScopes": [ "https://www.googleapis.com/auth/chat.memberships.readonly" ]
在 Apps 脚本项目的代码中添加一个与下面类似的函数:
问题排查
如果您遇到 Error 400: invalid_scope
并显示错误消息 Some requested scopes cannot be shown
,则表示您尚未在 Apps 脚本项目的 appsscript.json
文件中指定任何授权范围。在大多数情况下,Apps 脚本会自动确定脚本所需的范围,但在使用 Chat 高级服务时,您必须手动将脚本使用的授权范围添加到 Apps 脚本项目的清单文件中。请参阅设置显式范围。
如需解决此错误,请将适当的授权范围作为 oauthScopes
数组的一部分添加到 Apps 脚本项目的 appsscript.json
文件中。例如,如需调用 spaces.messages.create
方法,请添加以下代码:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
限制和注意事项
高级聊天服务不支持:
- Chat API 方法
media.download
。 - 开发者预览版中提供的 Chat API 方法
如需下载消息附件或调用开发者预览版方法,请改用 UrlFetchApp
。