gpt4 book ai didi

python - 我无法访问谷歌共享驱动器中的共享文件

转载 作者:行者123 更新时间:2023-12-05 07:21:31 24 4
gpt4 key购买 nike

我正在使用 Python 列出与我的 Google 服务帐户共享的文件。

除了我知道与我的服务帐户共享的一个文件没有出现在输出列表中之外,该过程运行良好。

该文件不归我所有,因此我可以展示和试用的内容有限,我注意到的一件事是问题文件“属于共享驱动器”,而其他文件则不属于。此外,“共享”界面与我习惯的界面非常不同,我再次认为是因为它位于共享驱动器空间中。

截图,问题文件共享界面全是红色/栗色,不像你得到的正常冰蓝色/灰色。

Shared drive file:共享文件接口(interface) problem file

非共享盘文件:共享接口(interface) normal file

当我与“普通”谷歌帐户共享文件时,它出现在与我共享区域的驱动器 UI 中没有问题。

我的猜测是驱动器上有某种权限层次结构阻止了我的服务帐户,希望有一个更简单的解决方案。

我尝试过的事情:

我已经要求所有者自己添加我的服务帐户电子邮件,这并没有改变任何东西。

我尝试了各种字符串查询更改,例如“sharedWithMe”,还查看了 appData 位置和驱动器。

如果我与普通 google 用户共享该文件,我可以通过 google 驱动器的“与我共享”区域访问它,因此它肯定是“共享”的。

如果我将文件复制到我自己的区域并与服务帐户共享文件,则副本会出现在输出中。

列出文件代码供引用

scope = 'https://www.googleapis.com/auth/drive.readonly'
api_name = 'drive'
api_version = 'v3'

##### I have a separate service builder function that is working fine

results = self.service.files().list(
pageSize=1000, fields="nextPageToken, files(id, name, shared,
mimeType)").execute()
self.files = results.get('files', [])
if not self.files:
print('No files found.')
else:
print('Files:')
for file in self.files:
print(u'{0} ({1})'.format(file['name'], file['id']))

我希望共享驱动器文件列在输出中,但事实并非如此。其他文件正确列出。

最佳答案

为了访问共享驱动器上的文件,您必须在 files: list 中指定驱动器 ID使用 driveId=XXXXXXXXXXXXXXXXXX 参数的方法。

您可以先使用 Google Drive REST API 提供的 Drives: list 方法获取此信息 as you can see here .

您可以使用以下代码获取特定共享驱动器上的文件列表:

def getSharedDriveFiles(service):

service = create_directory_service("Service_Account_Email")

results = service.drives().list().execute()
items = results.get('drives', [])

driveIDs = []

if not items:
print('No files found')
else:
print('Drives:')
for item in items:
print(u'{0} ({1})'.format(item['name'], item['id']))
driveIDs.append(item['id'])

results = service.files().list(pageSize = 10, fields='nextPageToken, files(name, id)', driveId='SHARED_DRIVE_ID', corpora='drive', includeItemsFromAllDrives=True, supportsAllDrives=True).execute()

items = results.get('files', [])
if not items:
print('No files found')
else:
print('Files:')
for item in items:
print(u'{0} ({1})'.format(item['name'], item['id']))

我确保我的服务帐户的电子邮件已添加到与其共享云端硬盘的用户列表中,并且我能够获得云端硬盘中所有文件的输出,无论文件所有者是哪个域的成员的。

关于python - 我无法访问谷歌共享驱动器中的共享文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56867798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com