GOLANG:exclude 个来自 google 个驱动器的垃圾文件

GOLANG:exclude trash files from google drive

type listAllFilesArgs struct {
 query     string
 fields    []googleapi.Field
 sortOrder string
 maxFiles  int64
}
type Field string

func (self *Drive) listAllFiles(args listAllFilesArgs) ([]*drive.File, error) {
 var files []*drive.File
 var pageSize int64
 if args.maxFiles > 0 && args.maxFiles < 1000 {
  pageSize = args.maxFiles
 } else {
  pageSize = 1000
 }
 controlledStop := fmt.Errorf("Controlled stop")
 err := self.service.Files.List().Q(args.query).Fields(args.fields...).OrderBy(args.sortOrder).PageSize(pageSize).Pages(context.TODO(), func(fl *drive.FileList) error {
  files = append(files, fl.Files...)

  // Stop when we have all the files we need
  if args.maxFiles > 0 && len(files) >= int(args.maxFiles) {
   return controlledStop
  }

  return nil
 })

 if err != nil && err != controlledStop {
  return nil, err
 }

 if args.maxFiles > 0 {
  n := min(len(files), int(args.maxFiles))
  return files[:n], nil
 }

 return files, nil
}

func (self *Drive) newPathfinder() *remotePathfinder {
 return &remotePathfinder{
  service: self.service.Files,
  files:   make(map[string]*drive.File),
 }
}

我正在使用 go 进行我的 googledrive api 开发,以下是版本使用的详细信息, go 版本 go1.8.1 windows/amd64 并进口 "google.golang.org/api/drive/v3" "google.golang.org/api/googleapi" 为了发展

err = gDrive.List(listArgs)
 if err != nil {
  fmt.Errorf("Failed to list files: %s", err)
 }

func (self *Drive) List(args ListFilesArgs) (err error) {
 listArgs := listAllFilesArgs{
  query:     args.Query,
  fields:    []googleapi.Field{"nextPageToken", "files(id,name,md5Checksum,mimeType,size,createdTime,parents)"},
  sortOrder: args.SortOrder,
  maxFiles:  args.MaxFiles,
 }
 files, err := self.listAllFiles(listArgs)
 if err != nil {
  return fmt.Errorf("Failed to list files: %s /n", err)
 }

 pathfinder := self.newPathfinder()

 if args.AbsPath {
  // Replace name with absolute path
  for _, f := range files {
   f.Name, err = pathfinder.absPath(f)
   if err != nil {
    return err
   }
  }
 }

 PrintFileList(PrintFileListArgs{
  Out:         args.Out,
  Files:       files,
  NameWidth:   int(args.NameWidth),
  SkipHeader:  args.SkipHeader,
  SizeInBytes: args.SizeInBytes,
 })

 return
}

google 驱动器 api 用于 Golang 列表文件,包括垃圾。 如何排除垃圾文件,

要过滤要从 google 驱动器检索的文件,您需要按照 "Search for Files" 中的说明指定搜索参数。将其作为 Q(...) 的参数传递,例如

Suppose you want to search for pdf file with a name containing myfile and not in trashed.

那么代码看起来像

err := self.service.Files.List().
   Q("mimeType='application/pdf' and name contains 'myfile' and trashed=false")