如何获取 Google 驱动器 API(v3) 目录中所有文件的列表
How to get a list of all files in directory with Google Drive API(v3)
我坚持使用必须 return 目录中所有文件列表的功能(在本例中目录是 "root")。当我调用这个函数时,它 return 我只有我用我的程序添加的文件(这个程序也可以上传文件到 Google 驱动器),而不是所有文件。它还显示了我删除的文件:/。我做错了什么?
这个函数我是从 Google Drive API Quickstart
复制过来的
service, err := getService()
if err != nil {
log.Fatalf("Unable to retrieve Drive client: %v", err)
}
r, err := service.Files.List().Q("'root' in parents").Do()
if err != nil {
log.Fatalf("Unable to retrieve files: %v", err)
}
fmt.Println("Files:")
if len(r.Files) == 0 {
fmt.Println("No files found.")
} else {
for _, i := range r.Files {
fmt.Printf("%v (%vs )\n", i.Name, i.Id)
}
}
- 您想检索根文件夹下的所有文件。
- 您想使用 google-api-go-client 和 golang 来实现此目的。
- 您已经使用驱动器 API.
为 Google 驱动器获取和放置值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
问题和解决方法:
从When I call this function, it return me files that only I added with my program (this program also can upload files to Google Drive), not all files.
的情况来看,我认为你的范围可能包括https://www.googleapis.com/auth/drive.file
。当 https://www.googleapis.com/auth/drive.file
用作范围时,仅检索应用程序创建的文件。
为了检索根文件夹下的所有文件,请使用以下范围。
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive.metadata.readonly
https://www.googleapis.com/auth/drive.metadata
.
如果只想检索文件列表,可以使用.readonly
的范围。
修改后的脚本:
根据你的问题,我注意到你正在使用 google-api-go-client with golang 和 Go Quickstart。这样的话,下面的修改怎么样?
如果drive.DriveFileScope
包含在范围内,请修改如下。
从:
config, err := google.ConfigFromJSON(b, drive.DriveFileScope)
到:
config, err := google.ConfigFromJSON(b, drive.DriveMetadataScope)
或
config, err := google.ConfigFromJSON(b, drive.DriveReadonlyScope)
- 如果您还想上传文件,请使用
drive.DriveScope
。
注:
- 当您修改范围时,请删除
tokFile := "token.json"
的 token.json
文件。并请运行脚本重新授权。这样,修改后的范围就会反映到访问令牌和刷新令牌中。请注意这一点。
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
我坚持使用必须 return 目录中所有文件列表的功能(在本例中目录是 "root")。当我调用这个函数时,它 return 我只有我用我的程序添加的文件(这个程序也可以上传文件到 Google 驱动器),而不是所有文件。它还显示了我删除的文件:/。我做错了什么? 这个函数我是从 Google Drive API Quickstart
复制过来的service, err := getService()
if err != nil {
log.Fatalf("Unable to retrieve Drive client: %v", err)
}
r, err := service.Files.List().Q("'root' in parents").Do()
if err != nil {
log.Fatalf("Unable to retrieve files: %v", err)
}
fmt.Println("Files:")
if len(r.Files) == 0 {
fmt.Println("No files found.")
} else {
for _, i := range r.Files {
fmt.Printf("%v (%vs )\n", i.Name, i.Id)
}
}
- 您想检索根文件夹下的所有文件。
- 您想使用 google-api-go-client 和 golang 来实现此目的。
- 您已经使用驱动器 API. 为 Google 驱动器获取和放置值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
问题和解决方法:
从When I call this function, it return me files that only I added with my program (this program also can upload files to Google Drive), not all files.
的情况来看,我认为你的范围可能包括https://www.googleapis.com/auth/drive.file
。当 https://www.googleapis.com/auth/drive.file
用作范围时,仅检索应用程序创建的文件。
为了检索根文件夹下的所有文件,请使用以下范围。
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive.metadata.readonly
https://www.googleapis.com/auth/drive.metadata
.
如果只想检索文件列表,可以使用.readonly
的范围。
修改后的脚本:
根据你的问题,我注意到你正在使用 google-api-go-client with golang 和 Go Quickstart。这样的话,下面的修改怎么样?
如果drive.DriveFileScope
包含在范围内,请修改如下。
config, err := google.ConfigFromJSON(b, drive.DriveFileScope)
到:
config, err := google.ConfigFromJSON(b, drive.DriveMetadataScope)
或
config, err := google.ConfigFromJSON(b, drive.DriveReadonlyScope)
- 如果您还想上传文件,请使用
drive.DriveScope
。
注:
- 当您修改范围时,请删除
tokFile := "token.json"
的token.json
文件。并请运行脚本重新授权。这样,修改后的范围就会反映到访问令牌和刷新令牌中。请注意这一点。
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。