2012-08-10 50 views
2

我已经使用Google Docs API(使用GData)构建了一个集成,允许用户从其他应用程序创建/编辑文档。最初,当文件被删除时,我们会让它们永久删除。它们在Google文档或Google云端硬盘中不再显示。现在,使用Google文档API删除它们时,它们仍然存在于Google云端硬盘中的文档列表中。当您尝试按照文档的链接时,您到达“对不起,您请求的页面(或文档)不存在。”页。使用Google Docs API删除的文档在Google Drive中仍然可见

Google云端硬盘是否不尊重通过Google文档API执行的操作?我是否需要使用Google文档API和Google Drive API删除这些文档?如果用户尚未迁移到Google云端硬盘会怎么样?有没有办法分辨是否已迁移?或者,我是否强制他们迁移,以便我可以使用Google Drive API让他们的Google Drive清除这些死亡文档?

回答

1

Drive API和Docs List API都使用相同的资源,因此您只需使用其中一个(我们推荐前者)。

使用Drive API,您可以使用trashdelete文件。当您清理文件时,它仍会在Google Drive上列出一个标签,将其标记为垃圾,以便您仍可以untrash它。

如果要完全删除文件,则必须使用delete方法。

+0

我们看到的问题是,Drive API和Docs List API在相同的资源上操作不一样。通过文档列表API发出的删除将完全删除资源。但是,通过Drive Web UI,我们仍然可以看到列出的资源。点击列出的资源,我们会遇到一个错误,指示资源不再存在。如果期望这两个API在底层资源上的工作方式相同,则这必定是Google云端硬盘中的一个错误。 – jottley 2012-08-11 00:12:13

+0

默认情况下从文档列表API中删除会删除文档。如果要使用文档列表API永久删除文档,则必须添加'?delete = true'参数:https://developers.google.com/google-apps/documents-list/#deleting_documents_and_files – 2012-08-11 00:16:15

+0

我们正在追加对我们的通话删除= true。 'docsService.delete(new URL(GoogleDocsConstants.URL_BASE_FEED +“/” + documentListEntry.getResourceId()。substring(documentListEntry.getResourceId()。lastIndexOf(':')+ 1) +“?delete = true”) ,documentListEntry.getEtag());' – jottley 2012-08-11 00:22:28

0

我在使用Google Drive API时遇到同样的问题。我想当Delete api删除文档时,它们仍然是一些与父文件夹保持链接的,所以浏览器呈现文档。当我厌倦用下面的一段代码删除文档时,它适合我。

DriveService.Childern.Delete(parentResId,fileId).Fetch(); // fileId =>要删除的文档的ResourceId

+0

在v3 API中,语法稍有变化:drive.files()。delete(id).execute(); – 2018-02-23 03:34:52

1

我遇到了同样的问题,我相信这是某种缓存在驱动器UI上。

该文件似乎被正确删除,并且对驱动器API不可见。

孤立的存根最终会被删除,因为缓存经常被清除。

我发现通过从父文件中删除文件,然后删除它意味着在测试我的应用程序时使用驱动器UI时更容易看到发生了什么。

service.children()。删除(folderId = PARENT_ID,childID的=的file_id).execute() service.files()。删除(FILEID =的file_id).execute()

0

这是一个缓存的问题该文件实际上已被删除。如果您试图在Drive UI中打开该文件,则应该看到“抱歉,您请求的文件不存在”的内容。

它很快就会清楚。

相关问题