繁体   English   中英

如何通过Python API使用Google Drive v3 API限制编辑者共享电子表格?

[英]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​​以编程方式阻止编辑者共享?

  • 您想使用Python将writersCanShare的属性修改为False
  • 您可以使用云端硬盘API。
  • 您要修改属性的文件的所有者是您。

如果我的理解是正确的,那么如何使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM