DriveApp.searchFiles不适用于特定搜索

时间:2014-01-10 10:50:58

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

我在Apps脚本中遇到DriveApp.searchFiles()问题。

如果我搜索Drive中的文件,其名称是这样的(图书名称):

Rif_Lettura_Nussbaum_02012014

La Torre_Lalatta_Legalizzare_Corriere_23122013

搜索在云端硬盘中找不到任何内容。

function test(){


  var title='Rif_Lettura_Nussbaum_02012014';
  //Uncomment to try the working sample
  //var title='Rif_Lettura_Nussbaum_02012';



  var candidateFiles=DriveApp.searchFiles('title contains "'+title+'"');
  var count=0;
  var fileCandidato;
  while (candidateFiles.hasNext()){
    count++;
    fileCandidato=candidateFiles.next();
    if(fileCandidato.getName().indexOf(title)!=-1){
      Logger.log("Finded: "+fileCandidato.getName());
    }

  }

  Logger.log(""+count+" files found with title "+title);

}

如果用空格分隔的单词的长度小于或等于26(即英文字母的字母数),searchFiles()函数似乎有效。

有人发现此错误,并知道解决方法吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,让我告诉你它与文件或文件夹名称有多长无关。 这是关于-+ 的全部内容。

示例:如果我搜索它,它会完美运行:HELLO-STACKOVERFLOW-WHATS-UP-HOW-YOU-DOING-GOOD-BYE

function searchDrive() {

  var myFolder = "HELLO-STACKOVERFLOW-WHATS-UP-HOW-YOU-DOING-GOOD-BYE"

  var folders = DriveApp.searchFolders(
     'title contains "'+ myFolder +'"');
  while (folders.hasNext()) {
     var folder = folders.next();
     Logger.log(folder.getName());
 }
}

但是,如果我搜索这个:HELLO - STACKOVERFLOW没有任何反应,HELLO + STACKOVERFLOW也是如此。

总之:DriveApp搜索功能无法处理文件或文件夹名称中的+-

答案 1 :(得分:0)

奇怪的是,如果您使用以下工作:

...
//var title = 'Rif_Lettura_Nussbaum_02012014';
var title = 'Rif_Lettura_Nussbaum_02012'; // title.length <= 26
...
var candidateFiles = DriveApp.searchFiles('title contains "' + title + '"');
...

但是,以下内容也适用:

...
var title = 'Rif_Lettura_Nussbaum_02012014';
...
var candidateFiles = DriveApp.searchFiles('title = "' + title + '"');
...

在文档中没有提及任何相关内容,或者是否有26个字符的限制。

我看到您打开了一个问题(Issue 3549: DriveApp.searchFiles doesn't work for long words),会在此处提供一个链接。