我正在尝试编写一个脚本来搜索我的Google云端硬盘以获取文件。搜索应该只查看文件的名称(而不是内容),并查找该名称中的字符串。
例如,有一个名为“2018-08-06_Miller_576132063_17.25.pdf”的文件,我想让我的脚本搜索“576132063”并获取fileID。
如果这很重要,我会在文件夹的子文件夹中搜索:“0B1-kfT4ZOAitb1lZSzM5YXR6czA”
function FileFinder() {
var ShowMeCC = '576132063';
var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').searchFiles('title contains "' + ShowMeCC + '" ');
while (files.hasNext()) {
var file = files.next();
var fnaMe = file.getName();
var fID = file.getId();
Logger.log(fID);
}
}
搜索一无所获。
这似乎是基本的,但我找不到任何提出这个具体问题的人。
提前致谢!
ShowMeCC
字符串的文件。如果我的理解是正确的,那么这个变通方法呢?
contains运算符仅对标题执行前缀匹配。例如,标题“HelloWorld”将匹配标题包含“Hello”但标题不包含“World”。
不幸的是,使用2018-08-06_Miller_576132063_17.25.pdf
无法直接检索title contains '576132063'
的文件。因此,作为一种解决方法,它被认为是以下解决方法。
在这种情况下,首先需要检索所有文件。但这是高成本。为了降低成本,我想提出两步搜索。
fullText contains '576132063'
查询检索文件。
fullText contains '576132063'
可以像2018-08-06_Miller_576132063_17.25.pdf
一样搜索文件名。fullText contains '576132063'
检索的文件中检索文件。通过此流程,不需要检索所有文件。因此成本低于上述方法。
function FileFinder() {
var ShowMeCC = '576132063';
var files = DriveApp.searchFiles('fullText contains "' + ShowMeCC + '"'); // Modified
// OR var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').searchFiles('fullText contains "' + ShowMeCC + '"'); // Modified
while (files.hasNext()) {
var file = files.next();
var fnaMe = file.getName();
if (fnaMe.indexOf(ShowMeCC) > -1) { // Added
var fID = file.getId();
Logger.log(fnaMe);
Logger.log(fID);
}
}
}
如果这个修改不是你想要的结果,我道歉。
再举一个示例,如果要从DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA')
等特定文件夹中检索文件,还可以使用以下脚本。当文件夹中的文件数量不多时,此方法的成本不会变高。
function FileFinderaaa() {
var ShowMeCC = '576132063';
var files = DriveApp.getFolderById('0B1-kfT4ZOAitb1lZSzM5YXR6czA').getFiles();
while (files.hasNext()) {
var file = files.next();
var fnaMe = file.getName();
if (fnaMe.indexOf(ShowMeCC) > -1) {
var fID = file.getId();
Logger.log(fnaMe);
Logger.log(fID);
}
}
}