问题描述
我创建了3个无标题的Google Spreadsheets来测试此脚本。在“我的云端硬盘”中搜索标题:无标题或仅无标题,这三个都找到了,但是在此脚本中,searchFiles方法找到了Doc和Slide,但没有找到Spreadsheet,而getFilesByName找不到任何内容!我也尝试使用getFilesByName进行“ untitled ”,但仍然没有找到。有什么想法吗?
function findUntitledFiles() {
Logger.log("Begin findUntitledFiles()");
var fileName = "*untitled*";
var file,folder,filesIt,foldersIt;
filesIt = DriveApp.searchFiles(' title contains "untitled" ') ; // did not find spreadsheet
// filesIt = DriveApp.getFilesByName(fileName) ; // found none
while (filesIt.hasNext() ) {
file = filesIt.next() ;
Logger.log("file.getName() = " + file.getName() );
foldersIt = file.getParents() ;
folderName = (foldersIt.hasNext()) ? foldersIt.next().getName() : "unkNown" ;
Logger.log( "folder " + folderName + " file name: " + file.getName() );
}
}
解决方法
对于DriveApp.getFilesByName(fileName):
fileName应该包含文件名的实际字符串。据我所知,不允许使用通配符。此外,幻灯片,文档和工作表都将具有不同的文件名-无标题的演示文稿,无标题的文档,无标题的电子表格。您可以通过这种方式搜索它们(如果您只是专门查看文档,表格和幻灯片):
function findUntitledFilesByName() {
var fileCnt = 0;
var fileNames = ["Untitled presentation","Untitled spreadsheet","Untitled document"];
for (var fileName in fileNames) {
var files = DriveApp.getFilesByName(fileNames[fileName]);
while (files.hasNext()){
var file = files.next();
var folders = file.getParents();
var folderName = (folders.hasNext()) ? folders.next().getName() : "unknown" ;
console.log( "folder " + folderName + " file name: " + file.getName());
fileCnt++;
};
}
}
对于DriveApp.searchFiles(标题包含“无标题”'):
您确定您的代码找不到电子表格吗?当我尝试您的代码时,它发现所有无标题文件都可以。唯一的区别是,我在while语句中包含了变量声明,因此变量中没有“旧”值。旁注...由于它使用参数“标题包含”,以搜索包含无标题单词的任何内容,它将返回结果文件 any 单词“无标题”。因此,如果您有一个文件“ One-Offs Untitled”,它将作为搜索结果返回。请记住这一点!
function findUntitledFilesUsingSearchFiles() {
var fileCnt = 0;
var files = DriveApp.searchFiles(' title contains "untitled" ') ;
while (files.hasNext()){
var file = files.next();
var folders = file.getParents();
var folderName = (folders.hasNext()) ? folders.next().getName() : "unknown" ;
console.log( "folder " + folderName + " file name: " + file.getName());
fileCnt++;
};
}
,
我创建了一个新的电子表格,我是该电子表格的所有者,现在可以通过脚本找到它。