2016-02-26 149 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

相關問題