所以看起来我只能从文件夹名称的开头或空格之后搜索单词。这也发生在你身上?
在我的环境中,我和你确认了同样的情况。在您的情况下,文件夹名称是SMITH_JOHN TAYLER_DAVID. 我认为在这种情况下,_可能是这个问题的原因。例如,当文件夹名称为 时SMITH JOHN TAYLER DAVID,您的所有搜索查询都可以检索到该文件夹。似乎可以搜索顶部字母和空格后的字母。我认为这可能是当前的规范。
REST API 中的“包含”是什么意思,Python 是如何实现的(可能使用“匹配”而不是“搜索”)?
这用作搜索查询。Ref此搜索查询用于“文件:列表”的方法。
例如,如果您想SMITH_JOHN TAYLER_DAVID通过搜索 的值'SMITH','TAYLER','JOHN','DAVID','MITH'而不是 的搜索查询来检索文件夹名称的文件夹,则name='SMITH_JOHN TAYLER_DAVID'可以使用以下流程。
- 使用 的搜索查询检索文件夹列表
name contains 'SMITH' and mimeType='application/vnd.google-apps.folder' and trashed=false。
- 通过从检索到的文件夹列表中搜索 的值
'SMITH','TAYLER','JOHN','DAVID','MITH'来检索文件夹。
通过这个流程,SMITH_JOHN TAYLER_DAVID可以通过一个 API 调用来检索 的文件夹。当此流程反映在使用 googleapis for python 的示例脚本中时,它变为如下。
示例脚本:
drive_service = build('drive', 'v3', credentials=creds) # Please use your credential.
q = "name contains 'SMITH' and mimeType='application/vnd.google-apps.folder' and trashed=false"
response = drive_service.files().list(q=q, fields='files(id, name)', pageSize=1000).execute()
search = ['TAYLER', 'JOHN', 'DAVID', 'MITH']
for file in response.get('files'):
name = file.get('name')
if all(e for e in search if e in name):
print(name)
参考: