使用 Node.js 构建 Google Workspace 插件

使用 Node.js 运行时在 Cloud Functions 中创建 Google Workspace 插件。

目标

  • 设置环境。
  • 创建和部署 Cloud Functions 函数。
  • 创建和部署插件。
  • 安装该插件。

前提条件

设置环境

在 Google Cloud 控制台中打开您的 Cloud 项目

  1. 在 Google Cloud 控制台中,前往选择项目页面。

    选择 Cloud 项目

  2. 选择您要使用的 Google Cloud 项目。或者,点击创建项目,然后按照屏幕上的说明操作。如果您创建 Google Cloud 项目,则可能需要为项目启用结算功能

配置 OAuth 权限请求页面

Google Workspace 插件需要配置意见征求界面。配置插件 OAuth 权限请求页面可定义 Google 向用户显示的内容。

  1. 在 Google Cloud 控制台中,依次点击“菜单”图标 > API 和服务 > OAuth 权限请求页面

    转到 OAuth 同意屏幕

  2. 用户类型字段中,选择内部,然后点击创建
  3. 填写应用注册表单,然后点击保存并继续
  4. 现在,您可以跳过添加镜重,然后点击保存并继续。今后,如果您创建的应用要在 Google Workspace 组织之外使用,则必须将用户类型更改为外部,然后添加应用所需的授权范围。

  5. 查看应用注册摘要。如需进行更改,请点击修改。如果应用注册未出现任何问题,请点击返回信息中心

创建和部署 Cloud Functions 函数

  1. 在本地终端中,启用 Cloud Functions、Cloud Build 和 Google Workspace 插件 API:

    gcloud services enable cloudfunctions cloudbuild.googleapis.com gsuiteaddons.googleapis.com
    
  2. 在一个空目录中,使用以下示例代码创建 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"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  3. 部署函数的方法如下:

    gcloud functions deploy loadHomePage --runtime nodejs12 --trigger-http
    

    如果出现提示,请指明您不允许对函数进行未经身份验证的调用。函数部署可能需要几分钟的时间。

创建插件部署

  1. 查找该插件对应的服务账号电子邮件地址:

    gcloud workspace-add-ons get-authorization
    
  2. 向服务账号授予 cloudfunctions.invoker 角色:

    gcloud functions add-iam-policy-binding loadHomePage \
        --role roles/cloudfunctions.invoker \
        --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    
  3. 获取已部署函数的网址。如需获取网址,请运行以下命令,然后在 httpsTrigger 部分下查找 url 字段:

    gcloud functions describe loadHomePage
    
  4. 使用以下示例代码创建文件 deployment.json。将 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": {}
      }
    }
    
  5. 创建部署:

    gcloud workspace-add-ons deployments create quickstart \
        --deployment-file=deployment.json
    

安装插件

  1. 在开发模式下安装部署:

    gcloud workspace-add-ons deployments install quickstart
    
  2. 打开或重新加载 Gmail 即可查看该插件。在右侧的工具栏中,找到烧杯图标。

  3. 点击该图标即可打开该插件。如果系统提示,请授权该插件。

可选:清理

为避免系统向您的账号收取费用,请删除您创建的资源:

  1. 从您的 Google 账号中卸载该插件:

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. 为避免系统因本快速入门中使用的资源向您收取费用,请删除 Cloud 项目:

    gcloud projects delete PROJECT_ID
    

    PROJECT_ID 替换为您在快速入门中使用的 Cloud 项目的 ID。您可以在 Google Cloud 控制台的信息中心页面上找到 Cloud 项目 ID。

后续步骤

如需为您的 Google Workspace 插件添加更多功能,请参阅以下指南: