当尝试使用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
所有标识符(fileId
和id
)都不等于文件中的id
'这是一个测试文件'。我在API文档中读到结果是自下而上的,但是没有删除的更改包含我的原始文件ID。
我如何知道删除了哪个文件?
编辑:我已创建了一个显示我的问题的视频,步骤https://www.youtube.com/watch?v=hh2ARFdxWGk
抱歉质量很差,我使用了糟糕的屏幕录制工具
答案 0 :(得分:2)
您可以尝试使用Apps Activity API代替更改。我刚刚使用Apps Activity API进行测试,垃圾和emptyTrash都显示为事件。 The API Explorer让您了解如何实现这一目标。
答案 1 :(得分:1)
首先,更改Feed中的条目按升序排列顺序排序。也就是说,最早的变化首先出现。所以检查响应中的最后一个enries。
您也可以在API explorer中尝试此操作。获取第一组列表并获取最新更改,您可以从响应中获取nextPageToken
,也可以从列表中的上一次更改中获取largestChangeId
并获得下一组更改。
希望有所帮助!