go - 在 Go 中创建/更新 google drive 权限/[使用 api 创建电子表格但无权访问它]

标签 go google-drive-api google-sheets-api file-permissions

我正在尝试使用带有以下代码的 google drive api 创建电子表格,但我无权访问它。

[更新:文件似乎不在我在这里指定的驱动器中,有人知道为什么会这样吗?]

[更新:在字段中添加了 parent ,但出现404错误,说找不到文件,如果有人知道原因,请提前致谢。]

func (dr *driveService) CreateFile(driveId string, fileName string, parents []string) (*drive.File, error) {
    file := &drive.File{
        DriveId:  driveId,
        Name:     fileName,
        MimeType: mimeTypeSpreadsheet,
        Parents:  parents,
        
    }
    file, err := dr.googleDriveService.Files.Create(file).Do()
    return file, err
}

所以我尝试使用这段代码创建/更新权限,但是出现了这个错误Error 403: The resource body includes fields which are not directly writable., fieldNotWritable

func (dr *driveService) CreatePermission(fileId string, permissionType string, permissionRole string) error {
    permissionToBeCreated := &drive.Permission{
        Type: permissionType,
        Role: permissionRole,
    }
    filePermission, err := dr.googleDriveService.Permissions.Create(fileId, permissionToBeCreated).Do()
    if err != nil {
        fmt.Printf("An error occurred creating permission for file: %v\n", err)
        return err
    }

    _, err = dr.googleDriveService.Permissions.Update(fileId, filePermission.Id,filePermission).Do()
    if err != nil {
        fmt.Printf("An error occurred: %v\n", err)
        return err
    }
    return nil
}

于是尝试去掉第二个函数中的update部分,但是文件的权限是nil

那么,有人知道如何解决这个问题吗?或者一般来说,我如何创建一个电子表格,每个人都有链接可以访问它?

谢谢!

最佳答案

通过在创建文件时将 supportAllDrives 设置为 true 解决了这个问题。 然而,这应该已经被弃用了,但在我的版本中没有。

编辑:

看起来 supportsAllDrives 不再被弃用,至少现在是这样。在官方文档中找不到弃用说明,所以似乎仍然支持。

同时,查看 this article ,似乎对共享云端硬盘的更改已被推迟:

Editor's note: Due to current events the Google team has made the decision to avoid causing additional disruption during this uncertain time. As a result, we're postponing the proposed changes regarding the opt-in mechanism for shared drives indefinitely. Shared drives and files within a shared drive will only be returned when requests set the relevant opt-in parameters.

关于go - 在 Go 中创建/更新 google drive 权限/[使用 api 创建电子表格但无权访问它],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63935583/

相关文章:

goconvey 请从 $GOPATH 中运行 goconvey 无法导入绝对路径

javascript - 任何人都可以使用 JavaScript 将文件上传到我的 Google Drive 公共(public)文件夹

elasticsearch - 没有在 Field ElasticSearch 6.4.3 上声明类型关键字的处理程序

variable-assignment - Go 中的同时赋值

javascript - 将文件上传到 Parse (Javascript)

python - 通过 python 禁用谷歌驱动器文件的下载选项

google-sheets-api - 阻止 Google 表格自动创建链接

c# - .NET 客户端中 Google 表格中的条件格式请求

google-sheets - 如何从这个包含 "/e"的 url 获取 google 表格(最终目标是获取 json)?

go - 内存中的ReadSeeker