Golang - 从共享 Google Drive 文件夹中获取文件列表

Golang - get list of files from a shared Google Drive folder

我正在尝试使用已知文件夹 ID 列出来自 Google 驱动器文件夹的文件及其 ID。

驱动服务设置似乎成功了。但是,我在尝试用信息填充变量时感到恐慌。这是代码片段:

    driveService, err := drive.NewService(ctx, option.WithCredentialsFile("../serverFiles/credentials.json"))
    if err != nil {
        log.Printf("Unable to retrieve Drive client: %v", err)
    }

    r, err := driveService.Files.List().
        DriveId('XXXXXXXXXX').
        PageSize(10).
        Fields("nextPageToken, files(id, name)").
        Do()
    if err != nil {
        log.Fatalf("Unable to retrieve files: %v", err)
    }

这是我得到的错误:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x14312db]

感谢您的帮助。

编辑
感谢@Tanaike 的回答,我了解到我对某些要点感到困惑。 我不是要从共享驱动器获取文件列表,而是要从共享文件夹获取文件列表。
我正在使用服务帐户进行访问。在另一个脚本中,同一服务帐户能够写入同一驱动器文件夹。所以,我认为权限是可以的。
这是我现在尝试获取列表的方式(driveService 的设置与上面相同)

    r, err := driveService.Files.List().
        Corpora("user").
        PageSize(10).
        Q("'XXXXXXXX' in parents").
        Fields("nextPageToken, files(id, name)").
        Do()

我仍然收到恐慌和信号。

我相信你的目标如下。

  • 您想使用 googleapis for go 从共享驱动器中检索文件列表。

这样的话,下面的修改怎么样?

发件人:

r, err := driveService.Files.List().
    DriveId('XXXXXXXXXX').
    PageSize(10).
    Fields("nextPageToken, files(id, name)").
    Do()

收件人:

r, err := driveService.Files.List().
    DriveId("XXXXXXXXXX").
    Corpora("drive").
    SupportsAllDrives(true).
    IncludeItemsFromAllDrives(true).
    PageSize(10).
    Fields("nextPageToken, files(id, name)").
    Do()

注:

  • 在本次修改中,假设您具有读取共享驱动器的权限,并且您已经可以使用驱动器API。请注意这一点。

参考: