【问题标题】:Creating a Google Sheets spreadsheet in the Google Drive app data folder with the client-side API使用客户端 API 在 Google Drive 应用数据文件夹中创建 Google Sheets 电子表格
【发布时间】:2021-02-21 22:12:03
【问题描述】:

我想使用客户端 JS 在 Google Drive App Data 文件夹(API 文档https://developers.google.com/drive/api/v3/appdata)中创建一个 Google Sheet。

我可以像这样创建非表格文件(在处理完所有身份验证内容后,按照browser quickstart for the Sheets API):

gapi.client.drive.files.create({
  resource: {
    name: 'myfile.txt',
    parents: ['appDataFolder'],
    mimeType: 'text/plain'
  },
  fields: 'id'
}).then(res => {
  console.log("Created OK: response was ", res);
}).catch(e => {
  console.log("Creation failed: error was ", e)
})

但是,如果我使用 mimeType: 'application/vnd.google-apps.spreadsheet',则会收到此错误:

reason: "notSupportedForAppDataFolderFiles",
message: "Method not supported for files within the Application Data folder."

此错误消息似乎完全没有记录。我的怀疑是这是不允许的:您不能将 Google 表格存储在 App Data 文件夹中,可能是因为表格真正没有作为文件存储在 Drive 中所有这些都是通过 Drive 团队的某种 UI 伪造而出现的。但我没有确认这一点。

我想这样做的原因是请求访问 App Data 文件夹的应用程序不需要请求访问所有其他文件。如果我无法在 App Data 文件夹中放置工作表,那么据我所知,为了创建电子表格,我的应用需要请求完全访问用户的电子表格所有,它完全不需要;它将使用自己的,仅此而已。我不想要求该访问权限,因为用户会(正确地)将其视为大规模的过度访问。

【问题讨论】:

    标签: google-drive-api google-sheets-api google-authentication


    【解决方案1】:

    documentation 指定:

    当您尝试在其中创建文件时,会自动创建应用程序数据文件夹。

    使用此文件夹来存储用户不应直接与之交互的任何文件。

    此文件夹只能由您的应用程序访问,其内容对用户和其他云端硬盘应用程序是隐藏的。

    因此,虽然没有关于应用程序数据文件夹中不允许使用 Google 表格的直接信息,但可以假设 Google 表格文件不符合上述标准。

    关于范围:

    • 您可以使用范围https://www.googleapis.com/auth/drive.file
    • 这是一个狭窄的范围,只允许应用程序访问由该应用程序创建的文件,请参阅here
    • 通过使用此范围,您可以避免要求访问所有用户文件,因此用户无需担心向应用程序提供此范围。

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2012-09-26
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      相关资源
      最近更新 更多