Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DriveApp.searchFiles-使用文件名的任何子字符串搜索文件_Javascript_Google Apps Script_Google Drive Api - Fatal编程技术网

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

Javascript DriveApp.searchFiles-使用文件名的任何子字符串搜索文件,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,我正在编写appscript代码来搜索驱动器中的文件。 下面是我的谷歌硬盘中的文件 t_abcd.txt p_abcd_0211.txt j_abcd.docx bwt_abcd.txt 等 请注意,\u abcd在上述所有情况下都很常见,只有前缀和后缀会发生变化。 我希望在用户搜索“abcd”或其子字符串时,搜索能够找到上述所有文件 在DriveApp.searchFiles(params)的文档中,我找不到用于搜索文件的正则表达式或子字符串 一种解决方案是从驱动器中获取所有文件,并编写单独的

我正在编写appscript代码来搜索驱动器中的文件。 下面是我的谷歌硬盘中的文件

t_abcd.txt

p_abcd_0211.txt

j_abcd.docx

bwt_abcd.txt

请注意,\u abcd在上述所有情况下都很常见,只有前缀和后缀会发生变化。 我希望在用户搜索“abcd”或其子字符串时,搜索能够找到上述所有文件

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

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

有没有更简单的方法?
请告知。

这个解决方法怎么样?不幸的是,在当前阶段,我认为并没有直接检索具有此类文件名的文件的方法。例如,下面的解决方法如何

全文:文件的全文,包括标题、描述、内容和可索引文本

用作解决方法的查询是
全文包含“\u abcd”
。我认为,将其用作搜索查询时,处理成本低于完整搜索。示例脚本如下所示。我认为对于你的情况有几个变通办法。所以,请把这看作是其中之一

示例脚本: 参考:

如果这不是您想要的,我很抱歉。

到目前为止,查询行为如下:

  • 如果文件以文件开头,则可以搜索文件
    bao\u幻灯片
    bao\u工作表
    bao\u文档

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

  • 无法搜索它是一个潜文本文档、工作表、幻灯片

尝试创建一个,以澄清其功能。

使用DriveApp.searchFiles(参数)您可以使用标题包含“X”获取文件,而无需使用正则表达式,也无需在使用全文包含搜索时采取额外步骤

在此基础上,下面是一个示例函数,用于记录名称包含“\u abcd”的所有驱动器文件的名称:

参考资料:


您是否尝试过只搜索
\u bao dong dong dong dang
它不起作用,因为我使用的标题包含“bao dong”,根据文档,包含运算符仅对名称执行前缀匹配。例如,名称“HelloWorld”将与包含“Hello”的名称匹配,但不与包含“World”的名称匹配。@Abhishek Bapna我的回答是否向您显示了您想要的结果?你能告诉我这件事吗?这对我的学习也很有用。如果这样做有效,其他与你有相同问题的人也可以将你的问题作为可以解决的问题。如果我的答案不适合您的情况,我很抱歉,并希望删除我的答案,因为我不想混淆其他用户。不,它将不起作用。正如我所提到的,contains操作符只对名称执行前缀匹配。例如,名称“HelloWorld”将与包含“Hello”的名称匹配,但不与包含“World”的名称匹配。根据我的要求,我已经从驱动器中取出了所有文件,然后应用了逻辑。所以我现在很好。@Abhishek Bapna是的。仅使用contains运算符,无法直接达到目标。因此,我提出了一个检索所有文件的解决方案。但是在这种解决方法中,通过使用
全文包含
,搜索成本可以比不使用它的方法低。在我的环境中,我可以确认这个脚本是有效的。但在您的环境中,此脚本不起作用。我的理解正确吗?如果我的变通方法不能用于您的情况,我很抱歉。当我说脚本不起作用时,我的意思是它不符合要求。在您发布的示例脚本中,它没有检索所有文件。它仅从驱动器中检索名称以“\u abcd”开头的文件。这就是为什么我没有运行它,因为它显然不符合要求。其次,搜索成本对我来说不是问题。@Abhishek Bapna感谢您的回复。关于
它只从驱动器中检索名称以“#abcd”
开头的文件,我可以确认,在我的环境中,包括
\u abcd
的文件名文件(如
######
已被检索。这与您的环境不同。关于这一点,我想向其他用户确认。关于
搜索成本对我来说不是问题。
,我从你的问题中没有注意到。很抱歉我的英语水平很差。谢谢@Mr.Rebot我为功能请求创建了一个问题。以下链接供参考
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)
  }
}
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)
  }
}