[英]How to use Google Drive v3 API via Python API to restrict editors from sharing a spreadsheet?
我试图弄清楚如何在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中进行操作。 我尝试将烫发字典更改为
new_permission_w = {
'value': 'MY_GMAIL_NAME@gmail.com',
'emailAddress': 'MY_GMAIL_NAME@gmail.com',
'type': 'user',
'role': 'writer',
'setWritersCanShare': False
}
(即,向dict添加'setWritersCanShare': False
),但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解决方案,但找不到。
我很茫然。 如何通过python使用API以编程方式阻止编辑者共享?
writersCanShare
的属性修改为False
。 如果我的理解是正确的,那么如何使用Drive API中的files.update方法?
body = {'writersCanShare': False}
res = service_drive.files().update(fileId=response_create['spreadsheetId'], body=body).execute()
如果我误解了您的问题,我深表歉意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.