如何使用谷歌驱动器V3 API通过Python API从共享电子表格编辑限制?

问题描述 投票:0回答:1

我试图找出如何编程在Python实现从分享你的共享文件(使用谷歌云端硬盘API V3)为防止​​他人解决方案描述here

我编程方式创建一个谷歌电子表格如下:

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': '[email protected]',
    'emailAddress': '[email protected]',
    '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': '[email protected]',
    'emailAddress': '[email protected]',
    '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​​以编程方式防止编辑从共享?

python google-drive-sdk gspread
1个回答
1
投票
  • 要修改writersCanShare的财产用Python False
  • 您可以使用驱动API。
  • 要修改属性的文件的所有者是你。

如果我的理解是正确的,怎么样使用files.update的方法驱动API?

Sample script:

body = {'writersCanShare': False}
res = service_drive.files().update(fileId=response_create['spreadsheetId'], body=body).execute()

Reference:

如果我误解了你的问题,我表示歉意。

© www.soinside.com 2019 - 2024. All rights reserved.