2016-02-26 151 views
2

在Google云端硬盘中我试图搜索当前目录中的文件。脚本链接到电子表格,因此它找到电子表格的父目录,然后使用其ID来指定文件夹中名为Title的文件的搜索。在谷歌文件夹中按名称搜索文件使用谷歌脚本的驱动器

我到目前为止的代码是:

function searchFolder(){ 

//get current folder id 
var ss = SpreadsheetApp.getActive(); //current spreadsheet 
var directParents = DriveApp.getFileById(ss.getId()).getParents(); 

while(directParents.hasNext()) { 
    var folder = directParents.next(); 
    var folderId = folder.getId(); 
    Logger.log(folder.getName() + " has id " + folderId); 
} 

//get files in folder 
var parent = DriveApp.getFolderById(folderId); // folder Id 
var search = 'name contains "Title"'; 
var specificFolder = parent.searchFiles(search); 

while (specificFolder.hasNext()) { 
    var file = specificFolder.next(); 
    Logger.log(file.getName()); 
    Logger.log(file.getId()); 
} 
} 

我得到错误“无效参数:查询”在while循环,这表明没有文件被发现的开始。

这个错误似乎只发生在我按名称搜索时发生。如果我将搜索变量更改为'fullText contains'hello''(文件Title中包含'hello'),那么就没有问题了。通过名称工作可以做些什么来进行搜索?

要复制错误,请在谷歌驱动器上的文件夹中创建两个电子表格。一个电子表格将脚本链接到它,另一个名为“标题”并正在被搜索。谢谢。

+0

如果你试试这个: var search ='title contains“Title”'; – Srikanth

回答

6

正如Srikanth指出的,它是title contains而不是name contains。代码可以变得更简单,请尝试下面的代码。您不需要使用扩展程序,只需使用简单的Google Apps脚本项目文件即可。右键单击空白区域的Drive --->More --->Google Apps Script

function SearchFiles() { 
    //Please enter your search term in the place of Letter 
    var searchFor ='title contains "Letter"'; 
    var names =[]; 
    var fileIds=[]; 
    var files = DriveApp.searchFiles(searchFor); 
    while (files.hasNext()) { 
    var file = files.next(); 
    var fileId = file.getId();// To get FileId of the file 
    fileIds.push(fileId); 
    var name = file.getName(); 
    names.push(name); 

    } 

    for (var i=0;i<names.length;i++){ 
    Logger.log(names[i]); 
    Logger.log("https://drive.google.com/uc?export=download&id=" + fileIds[i]); 

    } 

} 

还要检查这些链接:

1)Search all documents in a folder 2)Search Drive Files

相关问题