我正在尝试找出如何在Python中以编程方式实现here所述的解决方案,以防止他人共享您的共享文件(使用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进行操作的方法,如下所示:Use Google Drive API to change link sharing permissions,但我看不到如何在Python中进行操作。我尝试将烫发字典更改为
new_permission_w = {
'value': 'MY_GMAIL_NAME@gmail.com',
'emailAddress': 'MY_GMAIL_NAME@gmail.com',
'type': 'user',
'role': 'writer',
'setWritersCanShare': False
}
(即在字典中添加'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以编程方式阻止编辑者共享?
答案 0 :(得分:1)
writersCanShare
的属性修改为False
。如果我的理解是正确的,那么如何使用Drive API中的files.update方法?
body = {'writersCanShare': False}
res = service_drive.files().update(fileId=response_create['spreadsheetId'], body=body).execute()
如果我误解了你的问题,我表示歉意。