【问题标题】:Moving created files between folders yields strange "Shared With Me" behavior在文件夹之间移动创建的文件会产生奇怪的“与我共享”行为
【发布时间】:2018-10-03 17:42:26
【问题描述】:

我的目标是在特定文件夹中创建电子表格。我正在使用 V4 表格 API 创建电子表格,并在 java 中使用 V3 驱动器 API 创建文件夹。

但是,我不知道是否可以在特定文件夹中创建电子表格。如果可能(在 java 中),请告诉我。

为了实现在文件夹中创建电子表格的相同功能,我正在创建电子表格,然后将其移动到我之前创建的文件夹下。我正在使用此处的示例代码 https://developers.google.com/drive/api/v3/folder (在文件夹之间移动文件)。

我正在使用服务帐户创建这些。

当我创建文件夹和电子表格时,将电子表格移动到该文件夹​​,然后向我的谷歌帐户添加写入权限以便能够在浏览器中查看它们,我看到的是在“与我共享”下我可以查看文件夹 F 和文件 SS-1,以及在文件夹 F 内的同一个文件 SS-1。 当我打印电子表格文件 SS-1 的父级时,我只看到一个父级文件夹 F。

随后,当我添加其他文件 SS-2、SS-3 等时,将其移动到文件夹 F 并授予我的 google 帐户写入权限时,我只能看到文件夹 F 下的所有这些文件,正如预期的那样.

我无法确定我的代码中是否存在错误,因为当我打印文件 SS-1 的父文件时,我只看到一个父文件,即文件夹 F 的文件 ID。因此不确定为什么我会看到该文件SS-1 既位于文件夹 F 下,也位于文件夹 F 同级的“与我共享”下。

任何调试指针?或者,有没有更简单的方法可以直接在特定文件夹中创建电子表格?

【问题讨论】:

  • 听起来您可能直接与您的帐户共享第一个文件,而不是其他文件。没有代码,我们真的无能为力。

标签: java google-drive-api google-sheets-api service-accounts


【解决方案1】:

要直接在给定文件夹中创建文件,您可以使用 Drive API(因为 Sheets API 是关于操纵电子表格的内容(而不是像“我在哪里可以找到这个电子表格”这样的元数据):

使用原始 REST API,这很简单:

POST https://www.googleapis.com/drive/v3/files?fields=createdTime%2Cid%2Cname%2Cparents

{
  "mimeType": "application/vnd.google-apps.spreadsheet",
  "parents": [
    "some folder id"
  ],
  "name": "API Explorer Sheet in Folder"
}

回复:

{
  "id": "your new spreadsheet's id",
  "name": "API Explorer Sheet in Folder",
  "parents": [
    "some folder id"
  ],
  "createdTime": "2018-10-03T18:30:04.554Z"
}

Demo link
显然,您可以提供额外的请求元数据来影响创建的文件。

使用 Google 的 Java 客户端库类似地可以将文件添加到文件夹 - Drive API 的“使用文件夹”页面具有 sample code,这正是照片的功能。适应模仿上述 POST 请求的 Google 表格文件:

String folderId = "some folder id";
File fileMetadata = new File();
fileMetadata.setName("some file title");
fileMetadata.setParents(Collections.singletonList(folderId));
fileMetadata.setMimeType("application/vnd.google-apps.spreadsheet");
File file = driveService.files().create(fileMetadata)
    .setFields("id, parents, name") // properties in the response
    .execute();
System.out.println("File ID: " + file.getId());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2017-08-12
    • 2012-06-15
    • 2020-07-10
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多