在Go /中创建/更新Google驱动器权限[使用api创建电子表格但无权访问]

问题描述

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

[更新:该文件似乎不在我在此处指定的驱动器中,任何人都知道为什么会这样吗?]

[更新:在该字段中添加了父母,但出现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,似乎共享驱动器的更改已被推迟:

编者注:由于当前的事件,Google团队已决定避免在此不确定的时间内造成其他干扰。因此,我们将无限期推迟有关共享驱动器选择机制的建议更改。仅当请求设置了相关的选择加入参数时,才会返回共享驱动器和共享驱动器中的文件。