确定活动选项卡是否包含可编辑的 Google 文档

Determine if active tab contains an editable Google Doc

假设我的扩展已经使用 How can I get the current tab URL for chrome extension? 中建议的方法获得了当前活动选项卡的 URL,例如

chrome.tabs.query({
    active: true,
    lastFocusedWindow: true
}, function (tabs) {
    // use first tab to obtain url
    var tab = tabs[0];
    var url = tab.url
});

如何确定 URL 是否指的是我有编辑权限的 Google 文档?所有权和受邀合作者之间的区别对于此应用程序并不重要。我只对文档感兴趣,而不是电子表格或表单。

有关我正在尝试开发的内容的上下文,请参阅:How to manually generate notifications to a Google Doc collaborator?

这是一个 google 文档的并排视图,我在其中创建了一个文档,生成了一个共享 link,并在我未登录的浏览器中打开了它 google。我建议使用内容脚本插入一个 "find" 函数,如果它可以在 DOM("view only" 表示您没有编辑权限)。您可以使内容脚本仅匹配看起来像 docs.google.com/document/* 的 URL。

注意:google 更改 UI 非常频繁,因此这可能不是面向未来的。尝试在这两种情况下检查 google 文档的来源以寻找更多线索。

并排视图:

chrome devtools 中的源代码:

备选答案,基于 Google Drive API 而不是 Google 文档 UI。

在执行任何这些操作之前,请确保在清单中 declare permissions(只匹配看起来像 docs.google.com/document/* 的 URL)。

以下是您可以遵循的步骤的大致概述:

  1. 得到一个 文件, 这将 return 一些元数据。您可以使用 URL 提取 GET 请求中使用的相关 ID。

  2. 使用此元数据file resource to retrieve a permissions resource

  3. 在权限资源中,查看 role 属性:它将是 ownerreaderwriter。如果您是 reader,您将没有编辑权限,否则您应该有编辑权限。