我在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()
函数似乎有效。
有人发现此错误,并知道解决方法吗?
答案 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),会在此处提供一个链接。