如何判断文件是否已使用其API从Google云端硬盘中删除?

时间:2016-12-08 01:49:28

标签: go google-drive-api

我正在使用Google Drive API v3和Go SDK来监控驱动器上的新文件和已删除文件。我查看了Google Drive API v3 documentation,它们提供了2个文件属性,似乎可以让人们确定文件是否被删除。

  1. Changes.File.Trashed
  2. Changes.File.ExplicitlyTrashed
  3. 删除文件后,文件将显示在更改列表中,但两个属性均为false。

    我可以使用哪些属性,服务或电话来确定是否已移除某些内容?

    package main
    
    import (
        "fmt"
        "strconv"
        "google.golang.org/api/drive/v3"
    )
    
    func main() {
    
        // More code is required to setup the service, but I didn't include it.
        srv := new(drive.Service)
    
        //......
    
        token, _ := srv.Changes.GetStartPageToken().Do()
    
        // ..... some time passes
    
        // I right click file and select "Remove" from google drive using web app.
        // Now I list any changes in MyDrive
    
        changes, _ := srv.Changes.List(token.StartPageToken).IncludeRemoved(false).RestrictToMyDrive(true).Do()
    
        for _, c := range changes.Changes {
            fmt.Println("File name: " + c.File.Name) // I get the expected file name
            fmt.Println("Trash: " + strconv.FormatBool(c.File.Trashed)) //false
            fmt.Println("Removed: " + strconv.FormatBool(c.Removed)) //false
            fmt.Println("ExplicitlyTrashed: " + strconv.FormatBool(c.File.ExplicitlyTrashed)) //false
        }
    }
    

1 个答案:

答案 0 :(得分:0)

您应该将IncludeRemoved设置为true并将RestrictToMyDrive设置为false - 至少在您调查此缺失的更改问题时。医生说:

  

includeRemoved boolean是否包含指示项目已离开更改列表视图的更改,例如删除或丢失访问权限。 (默认值:true)

  

restrictToMyDrive boolean是否将结果限制为My Drive层次结构内的更改。这省略了对文件的更改,例如Application Data文件夹中的文件或尚未添加到My Drive的共享文件。 (默认值:false)

编辑12月10日:您的问题是由于如果文件被删除,那么更改资源将不包含文件资源。您应该检查removed标志的更改资源,而不检查任何文件属性,因为更改中不存在文件资源:

  

removed boolean文件是否已从更改列表的视图中删除,例如删除或丢失访问权限。

     

file nested object文件的更新状态。 如果文件尚未删除,则显示。

以上信息来自Drive V3 reference guide > changes page