我一直在尝试从Python 3.7脚本访问有关Google共享驱动器文件的一些简单信息:
The last time a Google Sheets file on a shared drive was modified.
我已经在GCP Drive API菜单中创建了一个服务帐户,它可以通过Sheets API访问/编辑/etc Google Sheets,没有任何问题
但是,当我对驱动器API使用相同的服务帐户时,它不会返回其自己文件夹(其中仅包含一个文件:“Getting Started”)之外的文件的任何信息。该帐户可以访问所有云API,具有与GSuite中API控制菜单中包含的驱动器API相关的所有作用域的全域授权
服务帐户的电子邮件地址已正确添加到共享驱动器中的所有文件夹中
有什么想法吗?基本上,我所需要的是知道任何给定用户最后一次修改工作表是什么时候
secret_cred_file = ...
SCOPES = ['https://www.googleapis.com/auth/drive']
credentials = service_account.Credentials.from_service_account_file(secret_cred_file, scopes=SCOPES)
service = discovery.build('drive', 'v3', credentials=credentials)
results = service.files().list(pageSize=10, fields="nextPageToken, files(id, name,modifiedTime)").execute()
items = results.get('files', [])
PS:我已经看到了:Getting files from shared folder但它没有帮助
通过向列表方法添加一些参数,我可以列出共享驱动器文件,而无需模拟用户,如google documentation所述:
示例
请记住,文件夹或文件需要与服务帐户共享
您需要模拟您的用户。
不可能通过API调用一次性获取域中的所有文件
在Service Accounts文章中说:
不幸的是,你不能只与服务帐户共享一个文件。要获取域中的所有文件,您需要:
这里是Python Library,特别是this section的一个很好的快速开始
请记住在GCP控制台和管理控制台中设置权限,尽管看起来您这样做是正确的
示例脚本
说明
此脚本有两个作用域:
在GCP云控制台中初始化的项目也已从管理控制台中被授予这些作用域>;安全性>;API控制>;域范围授权>;新增
脚本要做的第一件事是使用
from_service_account_file
构建凭据:然后它构建委托的凭证,即要模拟的用户:
从那里,它可以正常地构建服务。它获取用户列表,循环浏览用户并列出他们的文件。你可以根据自己的需要来调整
参考文献
相关问题 更多 >
编程相关推荐