所以看起来我只能从文件夹名称的开头或空格之后搜索单词。这也发生在你身上?
在我的环境中,我和你确认了同样的情况。在您的情况下,文件夹名称是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)
参考: