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

时间:2019-12-30 23:35:41

标签: python google-sheets google-drive-api google-sheets-api

我将服务帐户用于同时启用了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': 'user@123.com',
    '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': 'user@123.com', 'role': 'writer', 'displayName': 'Jeff Bezos', 'deleted': False}

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

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

1 个答案:

答案 0 :(得分:1)

  • 您要使用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检索的。

参考:

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