如何使用弃用的apis 3.0查找Google Apps Drive Documents的完整路径

时间:2013-12-31 07:28:52

标签: google-apps google-docs-api

我正在使用Google Apps Drive APIs 3.0。此API已弃用,但处于维护阶段。

我想查找Google云端硬盘文档的路径。 例如测试/ TEST1 / TEST2 / TEST3 / testDoc.txt

截至目前,我能够检索所有文档,但没有目录路径。 我想展示驱动文档的整个路径。

我相信,没有API可以检索整个父路径或父链接。 现在不推荐使用DocumentListEntry的getFolders()方法无法显示文件夹路径。

我调查并发现还有一个方法getParentsLink()只显示直接的父链接。它返回List。我无法重新迭代以再次找到其父链接。

public class MyClass {

private static final String DOCS_BASE_URL = "https://docs.google.com/feeds/";
private static final String DOCS_URL = "/private/full";

    private static final String adminEmail = "admin@mytest.com";
private static final String password = "password";
private static final String projectKey = "MyProject";

    public static void main(String[] args) {

    try {

         URL queryUrl = new URL(DOCS_BASE_URL + adminEmail + DOCS_URL);
         DocumentQuery docQry = new DocumentQuery(queryUrl);

         DocsService docService = new DocsService(projectKey);
         docService.setUserCredentials(adminEmail, password);

         docQry.setStringCustomParameter("showfolders", "true");
         DocumentListFeed docFeed = docService.query(docQry, DocumentListFeed.class);

         Iterator<DocumentListEntry> documentEntry = docFeed.getEntries().iterator();

         while (documentEntry.hasNext()) {
          DocumentListEntry docsEntry = documentEntry.next();

          // Complex Logic to find whole directory path.(that I don't understand :P)
            }
       } catch (Exception exception) {
        System.out.println("Error Occured " + exception.getMessage());
   }
  }
}

欢迎任何意见。 感谢。

1 个答案:

答案 0 :(得分:0)

要解决这个问题,你需要停止思考文件夹和路径,并考虑标签(也就是父母,也就是收藏品)。文件可以(可选)具有一个或多个标签/父母/集合。每个父母可以依次拥有一个或多个标签/父母/集合。因此,要获取文件的“路径”,您需要以递归方式获取其父级的父级。请记住,文件可以有多个父项,每个父项也可以有多个父项,因此文件可以有多个路径。

以您的示例“test / test1 / test2 / test3 / testDoc.txt”为例,假设您拥有testDoc.txt的ID,您可以获取它的DocumentListEntry,并调用getParentLinks,如果每个DocumentListEntry的URL都返回一个列表它的父母,在你的情况下只是“test3”。获取test3的DocumentListEntry,并重复以获取test2等。

这可能听起来很复杂,但是一旦你接受了你正在调用文件夹的东西不是文件的容器,而只是文件的属性,那就更有意义了。