Я пытаюсь выяснить, как программно в Python реализовать решение, описанное здесь для Запретить другим пользователям обмениваться вашими общими файлами (используя Google Drive API v3).
Я программно создаю электронную таблицу Google следующим образом:
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
get_credentials = ServiceAccountCredentials.from_json_keyfile_dict
credentials = get_creds(keyfile_dict=keyfile_dict, scopes=scopes)
service_sheets = discovery.build('sheets', 'v4', credentials=credentials)
service_drive = discovery.build('drive', 'v3', credentials=credentials)
# create sheet
body = {'properties': {'title': 'this is my spreadsheet title'}}
response_create = service_sheets.spreadsheets().create(body=body).execute()
Но эта таблица принадлежит моей учетной записи разработчика, и я не могу редактировать или даже просматривать ее.Затем я хочу дать себе разрешение на запись, которое я делаю следующим образом:
# change permission
new_permission_w = {
'value': 'MY_GMAIL_NAME@gmail.com',
'emailAddress': 'MY_GMAIL_NAME@gmail.com',
'type': 'user',
'role': 'writer'
}
perms = service_drive.permissions()
response_perm = (perms
.create(fileId=response_create['spreadsheetId'],
body=new_permission_w,
sendNotificationEmail=False,
useDomainAdminAccess=False,
transferOwnership=False)
.execute())
Я хочу помешать людям, с которыми я им делюсь, иметь возможность делиться ими с другими людьми.Похоже, что есть способ сделать это через API, как указано здесь: Используйте Google Drive API, чтобы изменить разрешения на обмен ссылками , но я не вижу, как это сделать в Python.Я попытался изменить dict для perms на
new_permission_w = {
'value': 'MY_GMAIL_NAME@gmail.com',
'emailAddress': 'MY_GMAIL_NAME@gmail.com',
'type': 'user',
'role': 'writer',
'setWritersCanShare': False
}
(то есть, добавив 'setWritersCanShare': False
к dict), но вызов API, похоже, игнорирует клавишу 'setWritersCanShare'
.Я также попытался изменить вызов API на
response_perm = (perms
.create(fileId=response_create['spreadsheetId'],
body=new_permission_w,
sendNotificationEmail=False,
useDomainAdminAccess=False,
setWritersCanShare=False,
transferOwnership=False)
.execute())
, но я получил TypeError: Got an unexpected keyword argument "setWritersCanShare"
.
Я также посмотрел, есть ли для этого решение gpsread ,но не смог найти.
Я в растерянности.Как я могу использовать API через python, чтобы программно запретить редакторам делиться?