Google Workspace Marketplace 的应用审核流程和要求

如需在 Google Workspace Marketplace 中公开发布应用,Google 会审核您的应用及其商品详情,以确保它们符合 Google 的设计、内容和样式准则。

Google 审核完您的应用后,会向您发送一封电子邮件,告知您的应用是否需要进行进一步处理或是否已获得批准。

  • 如果您的应用需要执行其他工作:您会收到一份审核文档,其中包含有关哪些方面需要改进的具体信息。解决问题,然后重新提交应用以供审核。
  • 如果审核团队批准了您的应用:系统会自动发布该应用,并向您发送一封通知电子邮件。

在提交应用以供审核之前,请确保您的应用已准备好发布。如需了解详情,请参阅为发布流程做好准备

审核时长

应用审核通常需要几天时间。所需时间取决于以下因素:

  • 最近提交的应用数量
  • 您的应用需要进行多少额外工作

应用未通过审核的常见原因

OAuth 验证:

  • OAuth 同意屏幕设置有误。例如,用户类型设置为内部或发布状态设置为测试

  • 应用未完成 OAuth 验证。

应用详情问题:

  • 在应用名称、徽标或应用说明中不当使用 Google 商标。如需相关指南,请参阅 Google Workspace Marketplace 品牌推广指南

  • 链接无效或指向不正确的信息。例如,隐私权政策的链接指向开发者支持页面。

  • 截屏和图片画质较差,或未准确反映应用功能。

应用准备情况:

  • 该应用仍在测试中,尚未公开发布。
  • 应用存在 bug 或无法完全正常运行。

查看条件

在提交应用以供审核之前,请确保您的应用符合所有要求并遵守 Google Workspace Marketplace 计划政策

针对所有应用的要求

您可以使用复选框来跟踪预审进度。

类别 条件
应用名称
  • 没有其他应用详情使用相同的名称。
  • 名称不包含版本号。
  • 名称与 OAuth 同意屏幕上的名称一致。
  • 名称不含糊或过于宽泛。
  • 名称不得超过 50 个字符。
  • 推荐)名称采用词首字母大写形式。
  • 推荐)名称不含标点符号,尤其是圆括号。
开发者信息
  • 开发者名称和开发者网站准确反映并指向开发者相关信息。
  • 根据消费者保护法律,我们必须告知欧洲经济区 (EEA) 的消费者,Google Workspace Marketplace 上的商家是交易者还是非交易者
    • 交易者:交易者是指意在实现与交易、业务、工艺或职业相关的目的,或者以交易者名义或代表交易者从事相关活动的个人。
    • 非交易者 - 非交易者(消费者)是指以非专业目的行事的人。

    如果未指定,则应用的商品详情页面上会显示“未指定交易者状态”。

应用说明
  • 所有提供的链接均有效且指向正确的信息。 例如,隐私权政策链接应指向介绍隐私权政策的页面。
  • 如果应用与第三方服务交互,说明中会描述该第三方服务的用途和交互方式。您可以选择性地提供指向相关网站的链接。
  • 简短而详细的说明能够理解。
  • 简短说明和详细说明不一致。
  • 推荐)价格信息完整且准确。
  • 推荐)正确定义了每种语言的完整属性集(名称、简短说明和详细说明),且没有语言不匹配的情况。
功能
  • 没有明显的 bug,并且所有操作(包括极端情况)都完全正常运行。加载时间由加载指示器管理。
  • 应用演示了与 Google API 的清晰交互。
  • 应用提供的功能是新功能或扩展功能,与 Google 产品中已有的功能不等同。
  • 应用不得用于广告或垃圾内容用途。
  • 应用已全面投入使用,不用于测试用途,也不是正在开发中的产品。
  • 如果应用与面向用户或付费用户提供的功能进行互动,则开发者系统中应为 Google 审核团队提供一个测试账号。
用户体验
  • 应用(包括其名称)未使用 Google 品牌资源、商标或 Google 品牌内容。请参阅 Google Workspace Marketplace 品牌推广指南
  • 只需授权和登录一次。应用使用一键式 SSO,最好是零点击 SSO。
  • 管理员为网域授予 OAuth 2.0 范围权限后,系统不会再次提示个别用户授予范围权限。
  • 用户在登录 Google 账号后无需再输入凭据。他们最多只需点击“使用 Google 账号登录”按钮即可获得访问权限。
  • 按钮标签、菜单项、标题和其他应用元素使用一致、明确且易懂的术语。例如,标签是指“删除”和“取消”等操作名称,而不是“是”或“否”。
  • 如果需要登录,退出功能会正常运行。 系统会撤消令牌,然后您可以从头开始登录。
  • 始终显示对操作的反馈,例如确认或错误消息。
  • 没有损坏的图片链接或模糊的图片。
图形
  • 图标大小正确、为方形,且具有透明背景。请参阅图形资源
  • 图标正确反映了应用的名称或功能。
  • 图标是彩色的(而非灰度)。
  • 图标未使用 Google 商标。
  • 屏幕截图和图片不模糊、不难辨认,也不不当。准确反映应用。
  • 推荐)屏幕截图清楚地显示了该应用的使用方式及其用途。
OAuth
  • 应用已通过 OAuth 验证,使用尽可能窄的 OAuth 范围,并且所有范围都已正确集成到 Google 服务 API。

特定应用集成的附加要求

选择应用详情中包含的应用集成,以查看相关的审核条件。您可以点击列名称对条件进行排序,例如按类别排序。

您可以使用复选框来跟踪预审进度。

应用集成 类别 条件
Google Chat 应用 名称
  • 说明中提供了用于与应用通信的按钮。
  • 应用名称以 A-Z(大写)或 0-9 开头。不能以符号开头。
Google Chat 应用 用户体验
  • 每当用户发起私信或将应用添加到聊天室时,该应用都会自动发送欢迎消息。欢迎消息不同于“帮助”命令。如需了解详情,请参阅 为 Google Chat 应用构建首页
  • 该应用支持“帮助”命令,可帮助用户开始使用该应用。如需了解详情,请参阅 响应斜线命令
  • 在聊天室或私信中对应用说话时,应用始终会做出回应。
  • 消息的拼写、大小写、标点符号和语法正确无误。消息不包含恶意、冒犯性或辱骂性内容。
  • 消息根据 Google 要求,对文本或卡片使用清晰、简洁且一致的格式。
  • 如果响应时间超过 2 秒,应用会发送一条消息来说明延迟情况。
  • 发送通知的应用应允许用户关闭通知。
  • 用户可以使用“@”提及应用来添加到聊天室。
  • 用户可以使用查看成员菜单从聊天室中移除应用。
  • 应用会向用户显示与应用交互所需的一切信息。
  • 应用使用的卡片格式符合 Google 要求。请参阅 创建互动卡片
  • 您可以通过 Chat 菜单中的查找应用选项使用该应用。
  • 应用与之交互的外部网址不属于预演环境或开发环境。
  • 在聊天室中向应用发送的每条消息中都必须使用“@”提及该应用。 这是应用知道自己必须做出响应的唯一方式。
  • 如果 Chat 应用预览来自第三方网域的链接:
    • 链接预览可提供与用户消息相关的补充信息。例如,预览指向销售交易的链接会添加账号、金额和阶段等信息。
    • 开发者与预览的网域相关联。

    如需了解详情,请参阅预览链接

  • (推荐)为了让 Workspace 管理员能够代表其组织中的用户安装您的应用,您的应用必须能够接收和发送私信。
Google Chat 应用 图形
  • 应用具有清晰可辨的头像。
Google 云端硬盘应用 功能
  • 该应用不会使用 Chrome 浏览器扩展程序直接操控云端硬盘 HTML 来提供功能。
  • 如果您的应用使用敏感或受限范围,则必须接受 OAuth 验证。请参阅如何提交验证请求
  • 如果您的应用使用受限范围,还必须通过安全评估。请参阅为何需要进行安全评估
Google 云端硬盘应用 用户体验
  • 如果应用将文件存储在云端硬盘中,则可以允许用户选择文件夹或创建和重复使用应用专用文件夹。配置数据可以存储在“App Data”文件夹中。应用不会将文件转储到用户的“我的云端硬盘”文件夹。
  • 此应用仅存储与已记述的应用功能关联的云端硬盘文件。
编辑器插件 功能
  • 该插件包含预期和必需的操作,并提供完成其工作流所需的所有工具。例如:
    • 如果该插件将样式应用于整个文档,则会提供仅将样式应用于所选文本的选项。
    • 如果该插件将电子表格数据上传到 Web 服务 Feed,则会提供指向该 Feed 的链接,以便于轻松导航。
    • 如果该插件要求用户拥有账号,则应提供链接或信息,以便用户在没有账号的情况下轻松创建账号。
  • 该插件的菜单项位于插件标签页下。
  • 即使该插件只是自定义函数,也应包含适当的文档。
  • 该插件正确使用 onInstall()onOpen() 来填充其菜单。在首次安装插件和打开其他文件时,系统会填充菜单项。请参阅 编辑器插件授权
  • 授权模式设置正确。请参阅 授权模式
  • 该插件必须在 Apps 脚本的 V8 运行时中实现。如需了解详情,请参阅 V8 运行时概览
编辑器插件 用户体验
  • 该插件提供了所有必要的信息,以便用户对产品及其使用方法有一个基本了解。
  • 该插件代码不会过度使用库,因为库可能会导致插件性能下降。
  • 尽可能避免错误并妥善管理错误,如果无法避免错误,则:
    • 错误消息会显示在对话框窗口中,而不是在 JavaScript 提醒或默认红色栏中。它们使用简单的语言来传达问题并描述用户必须采取什么措施来解决问题。
    • 如果用户执行了错误的操作,系统会尽可能显示一个按钮,以便用户解决问题。
    • 如需了解详情,请参阅 插件样式指南
  • 指向外部网页的链接会在新窗口中打开,且正确无误。
  • 该插件设计直观、用途明确。这意味着:
    • 用户始终清楚该做什么以及如何做。
    • 插件易于访问且易于理解。避免使用技术术语和行话。
    • 工作流程清晰明了且尽可能便利。
    • 尽可能保障用户及其内容的安全。
  • 该插件遵循 适用于编辑器插件的界面样式指南,并使用 适用于编辑器插件的 CSS 软件包
  • 该插件每个显示屏只能使用一个蓝色主操作。
  • 该插件一次只能显示一个对话框。不会重叠或同时打开多个对话框。
  • 该插件界面能整齐地填充分配的空间:
    • 文本和标签不会因“...”而被截断
    • 用户无需进行大量垂直滚动。
    • 内容宽度不超过 300p,因此没有水平滚动条。
  • 该插件要求确认所有敏感操作,或针对所有敏感操作显示警告。例如,如果该插件即将覆盖电子表格中的所有内容,系统会在操作执行之前向用户发出警告,并让用户确认操作。

    您可以通过更改设计来避免此要求。 例如,导入数据的 Google 表格插件可能会导致覆盖现有内容。您可以通过创建一个作为默认操作的数据工作表来消除风险。

  • 在操作加载期间,用户无法多次触发操作。例如,在操作加载期间,按钮会关闭或隐藏。
Google Workspace 插件 名称

日历插件

  • 如果插件使用 calendar.namecommon.name,则清单中的名称与应用详情中提供的名称相同。
  • 如果该插件使用 calendar.conferenceSolution,则会议解决方案名称不包含“Google 日历”。
  • 推荐)如果该插件使用 calendar.conferenceSolution,会议解决方案名称不得超过 30 个字符。
Google Workspace 插件 功能
  • 该插件使用正确的 widget(或 Meet 插件中的 iframe 界面)来实现所需功能。例如,使用开关来选择布尔值。

日历插件

  • 支持辅助日历和委托,如果不支持,则会妥善管理。例如,如果用户在创建活动时选择了他们拥有编辑权限的其他日历,会议创建不会失败。
  • 周期性活动正常运行。
  • 如果插件使用 calendar.conferenceSolution,则至少提供一个会议解决方案。
  • 如果该插件提供会议解决方案,则会使用适当的会议数据字段。例如,视频会议链接、电话号码、SIP 链接、访问码和其他受支持的属性使用结构化数据字段,而非在备注字段中提供。
  • 如果该插件提供视频会议解决方案,则只能修改会议详细信息,而不能修改其他活动字段。
  • 如果该插件提供会议解决方案,则创建会议所需的时间不超过 5 秒。

Gmail 插件

如果该插件使用 UrlFetchAppOpenLinkUrl

  • 网址有效。
  • 网址使用的是 HTTPS(而非 HTTP)。
  • 指定了完整网域。
  • 路径不为空。例如,可以使用 https://altostrat/,但不能使用 https://altostrat
  • UrlFetchApp 中不能使用通配符。

Meet 插件

  • 即使停用了第三方 Cookie,插件登录和用户历程也必须正常运行。
  • 插件必须提供与会议的运作或参与相关的功能。
  • 该插件不得执行任何会导致用户退出会议的操作,例如刷新浏览器。
  • 如果使用的是多人游戏体验,插件必须允许所有参与者协同处理内容,即使未提前设置权限也是如此。协作式插件会话期间必须能够调整权限。
  • 该插件必须处理 activity 启动流程的取消,并允许用户从应用中重新启动 activity。
  • 该插件必须提供用于登录和设置活动体验的侧边栏。
  • 该插件不得提供用于邀请聊天机器人的功能,也不得依赖于会议中是否存在聊天机器人
Google Workspace 插件 用户体验
  • 该插件有一个首页。如果您的 Google Workspace 插件是转换后的 Gmail 插件,系统会应用默认首页。
  • 插件卡片(或 Meet 插件中的 iframe 界面)正常运行。例如,没有重复项;返回、刷新和更新按钮会相应地运行。
  • 用户授权该插件后,该插件会显示自定义的首页卡片(Meet 插件中的网页),并在其中显示登录按钮(如有)、徽标和该插件的简短说明,以欢迎用户。
    • 如果触发登录按钮,系统会显示第三方供应商的自定义登录页面,其中明确指明有第三方服务在 Google Workspace 之外运行。
  • 该插件界面能整齐地填充分配的空间:
    • 文本和标签不会被“...”截断
    • 用户不必进行太多垂直滚动。
    • 内容宽度不超过 300p,因此没有横向滚动条。
  • 该插件的代码不会过度使用库,因为库可能会导致该插件降低性能。

日历插件

  • 如果该插件提供会议解决方案,则创建的会议有效且会在第三方会议网站上正确显示。

文档插件

如果插件预览来自第三方网域(智能条状标签)的链接:

  • 链接预览可向用户提供相关的补充信息。 例如,预览指向销售交易的链接会添加账号、金额和阶段等信息。
  • 开发者与预览的网域有联系。

如需了解详情,请参阅包含智能条状标签的预览链接

云端硬盘插件

  • 如果应用将文件存储在云端硬盘中,则可以允许用户选择文件夹或创建和重复使用应用专用文件夹。配置数据可以存储在“App Data”文件夹中。应用不会将文件转储到用户的“我的云端硬盘”文件夹中。
  • 该插件仅将与已记录的插件功能关联的文件存储在云端硬盘中。

Gmail 插件

  • 该插件没有在没有正当理由的情况下提及或链接到 Chrome 浏览器扩展程序。
  • “更多操作”菜单 包含可正常运行的通用操作。例如“退出账号”“关于”“支持”等。

Meet 插件

  • 如果插件需要许可或订阅:当用户没有许可时,必须向用户显示一则简单易懂的消息。
  • 如果用户因许可问题而无法使用插件,错误消息必须明确说明无法使用插件的原因,并建议用户采取措施来解决此问题。
  • Google Workspace Marketplace 中的插件商品详情必须指定使用该插件可能需要的许可和订阅要求的详细信息。如果插件有付费层级,Marketplace 商品详情必须提供指向网页的链接,该网页应提供有关价格或如何联系销售人员的更多信息。
  • 如果用户尚未登录,该插件必须显示显示 Google One Tap 中所述的一键登录提示,以及身份验证中所述的“使用 Google 账号登录”回退选项。除了“使用 Google 账号登录”机制之外,您还可以提供其他登录选项。
  • 该插件必须采用自适应设计,以便内容能够适应不同的尺寸。
  • 即使停用了第三方 Cookie,插件用户体验历程也必须正常运行。
  • 该插件不得在 iframe 中进行水平滚动。
  • 如果插件想要使用主舞台,则必须针对多人体验进行设计,并允许多个参与者同时操控内容。对于单人游戏体验,开发者应使用侧边栏。
  • (推荐)插件应显示已登录用户的身份。
  • 推荐)本地化选项:语言应基于浏览器设置的本地偏好设置(如果有)。
  • 推荐)选择内容时,应通过内容浏览界面来选择最近访问过的内容。
  • 推荐)如果不再需要侧边栏,该插件应在启动到主舞台后关闭侧边栏
Google Workspace 插件 图形

日历插件

  • 会议解决方案的徽标是一个公开网址。请参阅 提供会议解决方案徽标
  • 如果该插件使用 calendar.conferenceSolution,则会议解决方案的徽标应遵循 calendar.logoUrl 要求。请参阅 日历清单资源
  • 如果插件使用 calendar.logoUrlcommon.logoUrl,徽标与应用详情中提供的图标相同。
  • 如果该插件使用 calendar.logoUrlcommon.logoUrl,则徽标的网址以如下形式开头:https://lh3.googleusercontent.com/

Meet 插件

  • 插件品牌徽标的尺寸和样式应能让用户在 Meet 侧边栏中识别出来。
  • 必须在插件manifest中指定合适的深色模式徽标网址
Google Workspace 插件 OAuth

云端硬盘插件

  • 推荐)如果您想接收有限元数据,则该插件应包含 drive.addons.metadata.readonly 范围。
Web 应用 功能
  • 通用导航栏网址指向 Web 应用。没有任何功能的简单网页不属于 Web 应用。