DriveApp.searchFiles-使用文件名的任何子字符串搜索文件

时间:2019-01-24 13:42:40

标签: javascript google-apps-script google-drive-api

我正在编写应用程序代码以搜索驱动器中的文件。 以下是我的Google驱动器中的文件。

t_abcd.txt

p_abcd_0211.txt

j_abcd.docx

bwt_abcd.txt

请注意, _abcd 在以上所有内容中都很常见,只有前缀和后缀会更改。  当用户搜索“ abcd”或其子字符串时,我希望搜索能找到上述所有文件。

DriveApp.searchFiles(params)的文档中,我找不到任何用于搜索文件的正则表达式或子字符串。

一种解决方案是从驱动器中获取所有文件,并编写单独的逻辑以标识所需的文件。

有没有更简单的方法可以做到这一点? 请告知。

3 个答案:

答案 0 :(得分:1)

该解决方法如何?不幸的是,在当前阶段,我认为没有任何方法可以直接检索具有此类文件名的文件。因此,例如,以下解决方法如何?

Document of Search for Files

  

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_slideabcd_sheetsabcd_doc开头,则可以搜索abcd。

enter image description here

  • 如果是另一个单词,则可以搜索abcd。

enter image description here

  • 无法搜索它是doc_abcd,sheets_abcd,slide_abcd的子文本。

尝试创建bug,以阐明其功能。