使用 Node.js 运行时在 Cloud Functions 中创建 Google Workspace 插件。
目标
- 设置环境。
- 创建和部署 Cloud Functions 函数。
- 创建并部署该插件。
- 安装该插件。
前提条件
设置环境
在 Google Cloud 控制台中打开您的 Cloud 项目
- 在 Google Cloud 控制台中,前往选择项目页面。
- 选择您要使用的 Google Cloud 项目。或者,点击创建项目,然后按照屏幕上的说明操作。如果您创建 Google Cloud 项目,则可能需要为项目启用结算功能。
配置 OAuth 权限请求页面
Google Workspace 插件需要配置意见征求界面。配置插件 OAuth 权限请求页面可定义 Google 向用户显示的内容。
- 在 Google Cloud 控制台中,依次选择“菜单”图标 > > 品牌。
- 如果您已配置 ,则可以在品牌、受众群体和数据访问中配置以下 OAuth 权限请求页面设置。如果您看到一条消息,其中显示 尚未配置,请点击开始:
- 在应用信息下的应用名称中,输入应用的名称。
- 在用户支持电子邮件中,选择一个支持电子邮件地址,以便用户在有关于用户同意的问题时与您联系。
- 点击下一步。
- 在受众群体下,选择内部。
- 点击下一步。
- 在联系信息下,输入一个电子邮件地址,以便您接收有关项目的任何更改通知。
- 点击下一步。
- 在完成下方,查看 Google API 服务用户数据政策,如果您同意,请选择我同意 Google API 服务:用户数据政策。
- 点击继续。
- 点击创建。
- 目前,您可以跳过添加镜重。 今后,如果您创建的应用供 Google Workspace 组织之外的用户使用,则必须将用户类型更改为外部。然后,添加您的应用所需的授权范围。如需了解详情,请参阅完整的配置 OAuth 同意指南。
创建和部署 Cloud Functions 函数
在 Google Cloud 控制台中,点击激活 Cloud Shell
。
Cloud Shell 终端随即会打开,并在 Google Cloud 控制台的底部窗格中启动会话。
点击授权以预配 Cloud Shell 并连接到该服务。
在 Cloud Shell 终端中,开启 Cloud Functions API、Cloud Build API、Google Workspace 插件 API 和 Compute Engine API:
gcloud services enable cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ gsuiteaddons.googleapis.com \ compute.googleapis.com
通过点击 Cloud Shell 窗口工具栏上的
打开编辑器,启动 Cloud Shell Editor。
此内置代码编辑器提供了在构建和部署项目的相同环境中查看和修改文件的便利。
在空目录中,使用以下示例代码创建
function.js
文件:/** * Cloud Function that loads the homepage for a * Google Workspace add-on. * * @param {Object} req Request sent from Google * @param {Object} res Response to send back */ exports.loadHomePage = function addonsHomePage (req, res) { res.send(createAction()); }; /** Creates a card with two widgets. */ function createAction() { return { "action": { "navigations": [ { "pushCard": { "header": { "title": "Cats!" }, "sections": [ { "widgets": [ { "textParagraph": { "text": "Your random cat:" } }, { "image": { "imageUrl": "https://cataas.com/cat" } } ] } ] } } ] } }; }
在同一目录中,创建包含以下示例代码的
package.json
文件:{ "dependencies": { "@google-cloud/functions-framework": "^3.0.0" } }
点击
打开终端,返回 Cloud Shell 终端。
将
Cloud Build Service Account
角色 (roles/cloudbuild.builds.builder
) 添加到 Compute Engine 默认服务账号。首先,设置服务账号权限:
export PROJECT_ID=$(gcloud config get project) export SERVICE_ACCOUNT_NAME=$(gcloud compute project-info describe \ --format="value(defaultServiceAccount)")
接下来,授予缺少的服务账号权限:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \ --role="roles/cloudbuild.builds.builder"
运行以下命令以部署函数:
gcloud functions deploy loadHomePage --runtime nodejs22 --trigger-http
如果出现提示,请指定您不允许对函数进行未经身份验证的调用。函数部署可能需要几分钟的时间。
创建插件部署
查找该插件对应的服务账号电子邮件地址:
gcloud workspace-add-ons get-authorization
向服务账号授予
cloudfunctions.invoker
角色。将 SERVICE_ACCOUNT_EMAIL 替换为上一步中的serviceAccountEmail
字段。gcloud functions add-iam-policy-binding loadHomePage \ --role roles/cloudfunctions.invoker \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL
获取已部署函数的网址。如需获取网址,请运行以下命令,然后在
httpsTrigger
部分下查找url
字段:gcloud functions describe loadHomePage
点击
Open Editor(打开编辑器),返回 Cloud Shell 编辑器。
在
package.json
所在的目录中,使用以下示例代码创建deployment.json
文件。将 URL 替换为上一步中部署的函数的url
。{ "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"], "addOns": { "common": { "name": "My HTTP Add-on", "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png", "homepageTrigger": { "runFunction": "URL" } }, "gmail": {}, "drive": {}, "calendar": {}, "docs": {}, "sheets": {}, "slides": {}, "httpOptions": { "granularOauthPermissionSupport": "OPT_IN" } } }
返回 Cloud Shell 终端以创建部署:
gcloud workspace-add-ons deployments create quickstart \ --deployment-file=deployment.json
安装插件
在开发模式下安装部署:
gcloud workspace-add-ons deployments install quickstart
打开或重新加载 Gmail 即可查看该插件。 在右侧的工具栏中,找到一个烧杯图标。
点击该图标即可打开该插件。如果系统提示,请为该插件授权。
可选:清理
为避免系统向您的账号收取费用,请删除您创建的资源:
从您的 Google 账号中卸载该插件:
gcloud workspace-add-ons deployments uninstall quickstart
为避免系统因本快速入门中使用的资源向您收取费用,请删除 Cloud 项目:
gcloud projects delete PROJECT_ID
将 PROJECT_ID 替换为您在快速入门中使用的 Cloud 项目的 ID。您可以在 Google Cloud 控制台的信息中心页面上找到 Cloud 项目 ID。
相关主题
如需为 Google Workspace 插件添加更多功能,请参阅以下内容:
- 使用 HTTP 端点构建 Google Workspace 插件
- Codelab:使用 Node.js 和 Cloud Run 构建 Google Workspace 插件
- 预览包含智能条状标签的链接