Google Drive API - 更改:列表。获取已删除文件的原始ID

时间:2015-06-19 11:44:02

标签: php google-drive-api google-docs

当尝试使用Changes:list feed检测已删除的对象时,我注意到id值不正确,导致我无法检测哪个文件被删除。例如:

制作新的测试文件:这是一个测试文件

public 'title' => string 'This is a test' (length=14)
public 'id' => string '1wUFHe3DfU1mJnyqlIgAYSvMrIy8F91-7rZyAPFsyVpg' (length=44)

现在,当我删除此文件时,删除更改的第一个条目是:

public 'deleted' => boolean true
protected 'fileType' => string 'Google_Service_Drive_DriveFile' (length=30)
protected 'fileDataType' => string '' (length=0)
public 'fileId' => string '1_8Cvirw71AY0HQoaNwSMP3TlcIFAhpZikVfOrXFZCLo'        (length=44)
public 'id' => string '3612' (length=4)
public 'kind' => string 'drive#change' (length=12)
public 'modificationDate' => string '2013-12-23T10:55:45.340Z' (length=24)
public 'selfLink' => string 'https://www.googleapis.com/drive/v2/changes/3612' (length=48)
  protected 'modelData' => 
    array (size=0)
      empty
  protected 'processed' => 
    array (size=0)
      empty

所有标识符(fileIdid)都不等于文件中的id'这是一个测试文件'。我在API文档中读到结果是自下而上的,但是没有删除的更改包含我的原始文件ID。

我如何知道删除了哪个文件?

编辑:我已创建了一个显示我的问题的视频,步骤

  • 我创建了一个新文件(就在视频开始之前)
  • 我在更改:列表
  • 中显示了它的ID
  • 我删除了这个文件
  • 我创建了另一个文件
  • 我在更改:列表
  • 中显示文件ID
  • 更改:列表显示我的第一个文件ID,然后是第二个创建的文件ID。它没有显示删除文件事件

https://www.youtube.com/watch?v=hh2ARFdxWGk

抱歉质量很差,我使用了糟糕的屏幕录制工具

2 个答案:

答案 0 :(得分:2)

您可以尝试使用Apps Activity API代替更改。我刚刚使用Apps Activity API进行测试,垃圾和emptyTrash都显示为事件。 The API Explorer让您了解如何实现这一目标。

答案 1 :(得分:1)

首先,更改Feed中的条目按升序排列顺序排序。也就是说,最早的变化首先出现。所以检查响应中的最后一个enries。

您也可以在API explorer中尝试此操作。获取第一组列表并获取最新更改,您可以从响应中获取nextPageToken,也可以从列表中的上一次更改中获取largestChangeId并获得下一组更改。

希望有所帮助!