问题描述
我正在尝试使用带有以下代码的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团队已决定避免在此不确定的时间内造成其他干扰。因此,我们将无限期推迟有关共享驱动器选择机制的建议更改。仅当请求设置了相关的选择加入参数时,才会返回共享驱动器和共享驱动器中的文件。