最佳做法

提升用户的按照这些插件指南操作, 设计。

一般最佳实践

我们建议您针对所有插件都遵循以下最佳实践 开发应用。

在开始之前确定插件所有权

插件由 Apps 脚本项目定义,而 Apps 脚本项目必须归特定 账号或者其他存储在共享云端硬盘中的文件。 在编写插件代码之前,确定项目应该归哪个账号所有,并 哪个账号充当其发布商还要决定要针对哪些账号采取行动 作为协作者,并确保这些账号有权访问脚本 项目及其关联的 Cloud Platform 项目

扩展 Google Workspace,请勿照搬

用于为 Google 发布商管理的 扩展的 Google Workspace 应用, 自动完成复杂任务。插件只是复制应用代码中已有的功能, 对现有应用/服务没有进行重大改进 工作流程不太可能通过针对以下各项的附加审核

缩小范围

明确定义范围时,请执行以下操作: 始终选择尽可能宽松的那组范围。例如,不要 让插件请求获得对用户日历的完整访问权限 https://www.googleapis.com/auth/calendar 范围(如果只需要读取) 访问权限。对于只读访问,请使用 https://www.googleapis.com/auth/calendar.readonly 范围。

避免过度依赖库

使用 Apps 脚本可能会导致 运行速度 。 虽然 Apps 脚本库可以在插件中使用,但可能会遇到性能问题 避免在您的 项目,并考虑如何降低插件对它们的依赖。

上述延迟时间仅适用于正在使用的 Apps 脚本项目 作为服务器端库提供您可以使用客户端 JavaScript 库,例如 自由 jQuery,而不会遇到这种延迟。

Google Workspace 插件最佳做法

以下最佳做法仅适用于 Google Workspace 插件和使用 (属于卡片服务)。

仅使用几张卡片

如果该插件使用的卡片过多,导航配置 变得复杂且难以管理。

避免冲动,创建不必要的卡片。

使用微件创建函数

编写用于创建 Card 的代码时 或其他复杂的界面对象,不妨考虑将这些代码放在其专属函数中。 此创建函数应仅构建并返回对象。这样, 可以在界面必须刷新时快速重新生成该对象。注意 在使用下面的构建器类后调用 build() 卡服务

简化卡片

如果指定卡片包含太多的 widget,则可能会填满整个屏幕, 变得没那么实用虽然较大的卡片部分会呈现为可收起的界面元素, 从而对用户隐藏信息以简化您的插件, 用户需要的一切,仅此而已。

使用错误卡片

为错误情况创建卡片。如果插件发生错误, 显示一张卡片,里面会显示错误信息以及关于如何更正错误的说明 。例如,如果您的插件无法连接到非 Google 服务器 服务,则会显示一张说明此情况的卡片,并询问 用户以验证正在使用的账号信息。

编写测试和测试消息

您应对自己创建的所有插件进行全面测试。构建测试函数, 使用测试数据创建卡片和微件,然后验证这些对象 按预期创建

使用操作回调函数时, 通常必须构建一个响应对象。您可以使用如下语句 以验证响应构建是否正确:

    Logger.log(response.printJson());

运行您直接从 Apps 脚本中创建的测试函数 编辑器(使用运行菜单)。如果你有可行的插件, 请务必安装尚未发布的版本 以便进行测试

使用适用于此插件扩展的每个主机应用的测试数据。对于 例如,如果该插件扩展了 Gmail,那么您可能需要 及其邮件 ID,以便您确保该插件以 预期状态。您可以获取 使用 Gmail API Users.messages.list 方法,或利用 Apps 脚本的 Gmail 服务

日历会议最佳实践

如果您的插件集成了第三方 日历会议 选项导入到 Google 日历中,请遵循以下其他最佳做法:

onCreateFunction 变亮

每个onCreateFunction 当用户尝试 制定该类型的会议解决方案请确保这些函数仅执行 创建会议所需的最低限度的工作。这些动作过多 函数会导致插件的用户体验减慢。

为会议数据使用适当的 ConferenceData 字段

构建时 ConferenceData 对象,您可以在这些对象中填充有关此次大会的 验证码、电话号码、PIN 码、URI 等)。请务必使用 EntryPoint 字段 了解此信息。请勿将这些详细信息放入 ConferenceData 备注字段。

请勿将会议详细信息附加到 Google 日历活动

您的插件无需添加已创建的第三方的相关信息 添加到 Google 日历活动说明中。Google 日历支持 并在必要时自动执行此操作