尽管有200个来自API的权限,但无法在Google Sheet上添加权限

问题描述 投票:0回答:1

我正在将服务帐户用于同时启用了GoogleDrive和Google Sheets API的项目。我正在尝试向已存在的Google表格添加权限(由同一服务帐户创建)。 API会像成功一样返回,但是权限保持不变。

客户端配置:

from googleapiclient.discovery import build
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
GOOGLE_CLIENT = build('sheets', 'v4', credentials=creds)
GOOGLE_DRIVE_CLIENT = build('drive', 'v3', credentials=creds)

使用Google Drive V3 API:

new_permission = {
    'type': "user",
    'emailAddress': '[email protected]',
    'role': "writer"
}

response = GOOGLE_DRIVE_CLIENT.permissions().create(
    fileId=GOOGLE_SHEETS_ID, fields='*', body=new_permission).execute()

我得到的答复是:

{'kind': 'drive#permission', 'id': '1X2680991XXX793XX1308', 'type': 'user', 'emailAddress': '[email protected]', 'role': 'writer', 'displayName': 'Jeff Bezos', 'deleted': False}

然后我运行列表权限,但返回空:

permissions = GOOGLE_DRIVE_CLIENT.permissions().list(fileId=GOOGLE_SHEETS_ID).execute()
print(permissions.get('items', []))
python google-sheets google-drive-api google-sheets-api
1个回答
0
投票
  • 您想使用Drive API v3使用服务帐户检索权限列表。
  • 您想使用带有python的google-api-python-client实现此功能。
  • 您已经可以使用Drive API。

如果我的理解是正确的,那么这个答案怎么样?在您的脚本中,使用了Drive API v3。但是从permissions.get('items', [])起,您似乎正在尝试使用Drive API v2。这样,将返回空数组。那么下面的修改如何?

发件人:

permissions = GOOGLE_DRIVE_CLIENT.permissions().list(fileId=GOOGLE_SHEETS_ID).execute()
print(permissions.get('items', []))

收件人:

permissions = service.permissions().list(fileId=fileId, fields='*').execute()
print(permissions.get('permissions', []))
  • 在此修改中,权限列表是通过Drive API v3检索的。

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.