首页

首页是一项新的 Google Workspace 加载项功能,可用于定义一个或多个非情境化卡片。当用户不在特定情境中时(例如,当用户正在查看 Gmail 收件箱但尚未打开邮件或草稿时),系统会使用非情境化卡片来显示界面。

首页可让您显示非情境化内容,就像快速访问侧边栏 (Keep、日历和 Tasks)中的 Google 应用一样。首页还可以作为用户首次打开插件时的初始起点,有助于教导新用户如何与插件互动。

您可以在项目清单中指定插件的首页,并实现一个或多个 homepageTrigger 函数来定义插件的首页(请参阅首页配置)。

您可以拥有多个首页,每个首页对应一个插件所扩展的主机应用。您还可以决定定义一个通用默认首页,用于未指定自定义首页的主机。

满足以下条件之一时,系统会显示插件主页:

  • 当插件在宿主中首次打开时(在授权之后)。
  • 当用户在插件处于打开状态时从情境化上下文切换到非情境化上下文时。例如,从修改日历活动到主日历。
  • 当用户点击返回按钮的次数足以从内部堆栈中弹出所有其他卡片时。
  • 当非情境卡片中的界面互动导致 Navigation.popToRoot() 调用时。

设计首页不是强制性的,但强烈建议您这样做;如果您未定义任何首页,则在用户本应前往首页时,系统会使用包含插件名称的通用卡片。

首页配置

Google Workspace 插件使用 addOns.common.homepageTrigger 字段在插件的 manifest 中为所有宿主应用配置默认首页(非情境化)插件内容:

    {
      // ...
      "addOns": {
        // ...
        "common": {
          // ...
          "homepageTrigger": {
            "runFunction": "myFunction",
            "enabled": true
          }
        }
      }
    }
  • runFunction:Google Workspace 插件框架调用的 Apps 脚本函数名称,用于渲染首页插件卡片。 此函数是首页触发器函数。此函数必须构建并返回一个由首页界面组成的 Card 对象数组。如果返回多张卡片,宿主应用会在列表中显示卡片标题,供用户选择(请参阅返回多张卡片)。

  • enabled:是否应为此范围启用首页卡片。此字段是可选字段,默认值为 true。将此属性设置为 false 会导致所有主机(除非被该主机的设置替换;请参阅下文)的首页卡片都被停用。

除了通用配置之外,每个宿主应用的配置中还提供了结构相同的按宿主替换项,位于 addOns.gmail.homepageTriggeraddOns.calendar.homepageTrigger 等位置:

    {
      ...
      "addOns": {
        ...
        "common": {
          // By default, call 'buildHomePage' to render homepage content
          // in all hosts. Since calendar.homepageTrigger below overrides
          // this in Calendar and Drive and the homepageTrigger is disabled
          // for Gmail, this homepage function never executes.
          "homepageTrigger": { "runFunction": "buildHomePage" }
        },
        "calendar": {
          // Show customized homepage content for Calendar only.
          "homepageTrigger": { "runFunction": "buildCalendarHomepage" }
        },
        "drive": {
          // Show customized homepage content for Drive only.
          "homepageTrigger": { "runFunction": "buildDriveHomepage" }
        }
        "gmail": {
          // Disable homepage add-on content in Gmail.
          "homepageTrigger": { "enabled": false }
        },
        ...
      }
    }

请注意,这相当于以下清单摘录:

    {
      ...
      "addOns": {
        ...
        "common": { /* ... */ }, // Omitted a default homepageTrigger specification.
        "calendar": {
          // Show customized homepage content for Calendar only.
          "homepageTrigger": { "runFunction": "myCalendarFunction" }
        },
        "drive": {
          // Show customized homepage content for Drive only.
          "homepageTrigger": { "runFunction": "myDriveFunction" }
        }
        "gmail": { /* ... */ },
        ...
      }
    }

所有 homepageTrigger 部分都不是必需的。不过,任何给定宿主产品中针对插件显示的界面都取决于是否存在相应的清单字段,以及是否存在关联的 homepageTrigger。以下示例展示了在不同的清单配置下,哪些插件触发函数(如果有)会执行以创建首页界面:

首页流程

首页事件对象

被调用时,上述首页触发器函数 (runFunction) 会收到一个包含调用上下文数据的事件对象

首页事件对象不包含 widget 或上下文信息;传递的信息仅限于以下通用事件对象字段:

  • commonEventObject.clientPlatform
  • commonEventObject.hostApp
  • commonEventObject.userLocalecommonEventObject.userTimezone(但请参阅访问用户语言区域和时区,了解限制信息)。

如需了解详情,请参阅事件对象

其他非情境化卡片

插件界面可以包含其他非上下文相关的卡片,这些卡片不是首页。例如,您的主页可能有一个按钮,用于打开“设置”卡片,用户可以在其中调整插件设置(此类设置在大多数情况下与上下文无关,因此属于非情境化设置)。

非情境卡片的构建方式与任何其他卡片相同;唯一的区别在于生成和显示卡片的动作或事件。如需详细了解如何创建卡片之间的过渡效果,请参阅导航方法