Получить адрес электронной почты владельца файла Google Drive с помощью Google Drive API V3 через python - PullRequest
0 голосов
/ 29 мая 2018

У меня проблемы с получением владельца файла на Google Диске через Google Drive API v3.

Я мог бы сделать это в v2, но все изменилось.

Согласно документация Мне нужно:

  1. Список разрешений для файла (без проблем)
  2. Найти Id разрешения с ролью владельца из этогосписок разрешений (без проблем)
  3. Получить это разрешение ... которое должно вернуть ресурс разрешений , который должен включать адрес электронной почты (проблема!)

К сожалению, то, что я получаю, включает некоторую информацию, но не адрес электронной почты.

Я подозреваю, что мне нужно изменить мой вызов "get", чтобы сообщить API, какие поля мне нужны, ноЯ не вижу, как это сделать.

Вот что у меня есть (v3):

from oauth2client.service_account import ServiceAccountCredentials
from httplib2            import Http
from apiclient.discovery import build

def build_service(user):
  keyfile = 'C:\Python27\Scripts\Certificates for Transfer owner script\Transfer Ownership on Drive-f240cff252af.json'
  SCOPE = 'https://www.googleapis.com/auth/drive'
  credentials = ServiceAccountCredentials.from_json_keyfile_name(keyfile, scopes=SCOPE).create_delegated(user)
  http_auth = credentials.authorize(Http())
  return build('drive', 'v2', http=http_auth)

service = build_service('lpglobaldrive@lonelyplanet.com.au')
f = service.files().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk').execute()

p = service.permissions().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk',permissionId='18137907375963748644').execute()
currentOwner = p['emailAddress']

К сожалению, я получаю "KeyError: 'emailAddress'" (и еслиЯ смотрю на содержимое "p", там есть роль, вид, тип и идентификатор, но нет адреса электронной почты).

Thiу меня работает s (используя v2):

from oauth2client.service_account import ServiceAccountCredentials
from httplib2            import Http
from apiclient.discovery import build

def build_service(user):
  keyfile = 'C:\Python27\Scripts\Certificates for Transfer owner script\Transfer Ownership on Drive-f240cff252af.json'
  SCOPE = 'https://www.googleapis.com/auth/drive'
  credentials = ServiceAccountCredentials.from_json_keyfile_name(keyfile, scopes=SCOPE).create_delegated(user)
  http_auth = credentials.authorize(Http())
  return build('drive', 'v2', http=http_auth)

service = build_service('lpglobaldrive@lonelyplanet.com.au')
f = service.files().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk').execute()

currentOwner = f['owners'][0]['emailAddress']

1 Ответ

0 голосов
/ 29 мая 2018

Слишком просто ... просто нужно добавить следующее к вызову get:

, fields = 'emailAddress'

т.е.

currentOwner = service.permissions().get(fileId='1lASRBuAHRxEC-T0X5SdlF3w7X_168Q2QV9L0V6QaXUk',permissionId='18137907375963748644',fields='emailAddress').execute()['emailAddress']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...