python google api 创建有权限的文件夹

python google api create folder with permission

我正在尝试在 google 驱动器中创建一个 public 文件夹并进入 return 一个 link 进行共享 这个:

def createfolder(foldername,service):
    new_role='reader'
    types='anyone'
    # create folder
    file_metadata = {
        'name': '{}'.format(foldername),
        'mimeType': 'application/vnd.google-apps.folder',
         'role': 'reader',
         'type': 'anyone',

    }
    file = service.files().create(body=file_metadata,
                                  fields='id,webViewLink').execute()
    print('Folder ID: %s' % file.get('webViewLink'))
    return file.get('id')

我走到这一步
它创建和文件夹并打印 link
尝试将字段添加到正文角色和类型中,并将其设置为 reader / 任何人,但这不起作用
角色类型字段似乎被忽略
有没有办法在创建时执行此操作,还是我必须在创建后更改权限?

创建文件夹和更改权限是两个不同的调用。

先创建你的目录

file = service.files().create(body=file_metadata).execute()

然后执行 permissions.update 将文件的权限设置为 public。

permissions = service.permissions().update(body=permissions).execute()

我不是 python 开发者所以代码是猜测

你必须打电话给 Permissions.create:

文件权限是通过 Permissions 处理的,而不是通过 Files 方法处理的。

如果您检查 Files resource representation,您会注意到某些字段,例如 namemimeType,在 Notes 下有单词 writable .这意味着您可以使用此资源 (Files) 方法直接修改这些字段。

如果您查看 属性 permissions,您会发现那里没有 writable。这意味着 permissions 不能直接更新,使用 Files 方法。您必须改用 Permissions 方法。

更具体地说,您必须在创建文件夹并检索其 ID 后调用 Permissions.create

代码片段:

def shareWithEveryone(folderId, service):
    payload = {
        "role": "reader",
        "type": "anyone"
    }
    service.permissions().create(fileId=folderId, body=payload).execute()

参考: