2017-05-10 2 views
2

GOLANG : 구글에서 제외 쓰레기 파일 내가 버전 사용의 세부 사항을 WRE 다음 내, Google 드라이브 API를 개발에 가서 사용하고

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

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

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

 
\t \t return nil 
 
\t }) 
 

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

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

 
\t return files, nil 
 
} 
 

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

드라이브 이동 버전 go1 .8.1 windows/amd64 및 가져 오기 "google.golang.org/api/drive/v3" "google.gola 개발

에 대한 ng.org/api/googleapi "

Golang 쓰레기를 포함하는 파일을 나열하는

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

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

 
\t pathfinder := self.newPathfinder() 
 

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

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

 
\t return 
 
}

구글 드라이브 API를. 휴지통 파일을 제외하는 방법

+0

스 니펫 모양을? – putu

+0

@putu, 업데이트 됨 –

+0

파일을 ['drive.File'] (https://godoc.org/google.golang.org/api/drive/v3#File)로 필터링 할 수 있습니다. 구조체에는'Trashed'과'ExplicitlyTrashed' 필드가 있습니다. 'Q (...) '에 전달 될 쿼리에 설정하십시오. 쿼리에 대한 자세한 내용은 [파일 검색] (https://developers.google.com/drive/v3/web/search-parameters) – putu

답변

0

Google 드라이브에서 검색하려는 파일을 필터링하려면 "Search for Files"에 설명 된 검색 매개 변수를 지정해야합니다. 예를

를 들어, Q(...)의 인수로 전달하면 myfilenot in trashed를 포함하는 이름으로 pdf 파일을 검색 할 가정하자.

다음 코드는 어떻게 self.listAllFiles`와`self.newPathfinder은()`구현`예를 들어, 불분명 여전히

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