与服务帐户信息共享或检索与特定服务帐户共享的所有文档?

Getting shared with service account info or retrieve all docs shared with a specific service account?

我正在寻找方法

1) Read/retrieve 每当与特定服务帐户共享 Sheet 时共享通知

2) 获取与特定服务帐户共享的所有 Sheet 的列表

背景:用户复制现有的 Sheet 模板,修改其内容并与我的服务帐户电子邮件共享,以便我可以通过编程方式检索 Sheet 数据。这仍然需要用户在分享后将结果分享 link 输入到我的后台。

相反,我更喜欢使用 API 来接收类似 "shared with service account" webhook 事件的内容,或者选择读取与此服务帐户共享的所有 Sheet。

这需要 GSuite,还是有 API/webhook 来实现?

答案:

是的,您可以使用驱动器 API 检索此信息。

更多信息:

如果您作为服务帐户进行 Drive: files.list 调用,它将 return 服务帐户的 驱动器的文件。

如果您的用户正在与服务帐户共享表格,您可以通过 API 调用此方法并将 sharedWithMe 标志设置为 true 并将 mimeTypeq 参数中设置为 application/vnd.google-apps.spreadsheet

JavaScript 示例:

function execute() {
    return gapi.client.drive.files.list({
      "q": "sharedWithMe and mimeType = 'application/vnd.google-apps.spreadsheet'"
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }

参考文献: