我正在编写应用程序代码以搜索驱动器中的文件。 以下是我的Google驱动器中的文件。
t_abcd.txt
p_abcd_0211.txt
j_abcd.docx
bwt_abcd.txt
等
请注意, _abcd 在以上所有内容中都很常见,只有前缀和后缀会更改。 当用户搜索“ abcd”或其子字符串时,我希望搜索能找到上述所有文件。
在 DriveApp.searchFiles(params)的文档中,我找不到任何用于搜索文件的正则表达式或子字符串。
一种解决方案是从驱动器中获取所有文件,并编写单独的逻辑以标识所需的文件。
有没有更简单的方法可以做到这一点? 请告知。
答案 0 :(得分:1)
该解决方法如何?不幸的是,在当前阶段,我认为没有任何方法可以直接检索具有此类文件名的文件。因此,例如,以下解决方法如何?
fullText:文件的全文,包括标题,描述,内容和可索引文本。
用作解决方法的查询为fullText contains '_abcd'
。我认为当将其用作搜索查询时,处理成本比完全搜索要低。示例脚本如下。我认为针对您的情况有几种解决方法。因此,请仅考虑其中之一。
var q = "fullText contains '_abcd'";
var files = DriveApp.searchFiles(q);
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
if (filename.indexOf("_abcd") > -1) {
Logger.log(filename)
}
}
如果这不是您想要的,我表示歉意。
答案 1 :(得分:1)
使用 DriveApp.searchFiles(params),您可以使用 标题包含 “ X”来获取文件,而无需使用正则表达式且无需使用 全文包含 进行搜索时需要采取额外的步骤。
以Tanaike's answer为基础,这是一个示例函数,该函数记录名称包含“ _abcd”的所有云端硬盘文件的名称:
function findFiles() {
var q = "title contains '_abcd'";
var files = DriveApp.searchFiles(q);
while (files.hasNext()) {
var file = files.next();
filename = file.getName();
Logger.log(filename)
}
}
参考:
答案 2 :(得分:0)
到目前为止,查询的行为如下:
abcd_slide
,abcd_sheets
,abcd_doc
开头,则可以搜索abcd。尝试创建bug,以阐明其功能。