2017-08-04 102 views
0

這是我的代碼,點文件夾中的ID來傳遞,並有將其記錄在該文件夾中的給定文件名的所有匹配:爲什麼Google腳本的getFolderbyId不接受變量而沒有錯誤?

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

SearchFiles("ID Here"); 

的問題是,這段代碼運行時,我得到了錯誤「找不到具有給定ID的項目,或者您沒有權限訪問它。」儘管確保ID是正確的,並且我擁有正確的權限。但是,如果我將正確的ID直接放入getFolderById函數而不是變量,那麼它可以正確無誤地正常工作。什麼阻止我使用變量?

+1

的'getFolderById()'方法需要的ID是一個字符串。如果該函數正在接收一個整數的ID,則可能導致錯誤。檢查數據類型:'Logger.log('typeof SourceID:'+ typeof SourceID)'添加該行代碼,運行代碼,然後查看日誌。如果SourceID變量不是'字符串'數據類型,那就是問題所在。 –

回答

1

你正在運行哪個功能?我猜你在點擊運行時正在運行SearchFiles函數。調用另一個函數的SearchFiles功能和運行如下該功能:

function myFunction() { 
    SearchFiles("Folder ID"); 
} 

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

運行myFunction,它應該按預期工作:

enter image description here

+0

完美的作品,謝謝!我想我認爲把它放在下面會有效,但我猜不是。 –

相關問題