我正在尝试使用带有以下代码的 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/