2016-09-14 68 views
0

我在谷歌驅動器上的文件夾中有多個命名的電子表格。如何通過將某個名稱傳遞給某個函數來獲取他們的id或url?從電子表格名稱獲取電子表格ID或網址

我可以使用DriveApp獲取文件,但是我不知道如何從中獲取該文件。

function getFile(name) 
{ 
    var folder = DriveApp.getFolderById('id'); 
    var file = folder.getFilesByName(name); 
    //get file id 
} 

有沒有辦法使用DriveApp或SpreadsheetApp獲取id或url?

回答

1

命令folder.getFilesByName(name);潛在檢索多個文件(具有它的名字說IT- 的GetFile 小號),所以它給你一個文件迭代器,你需要用while循環解析。
如果你是絕對肯定至少有一個文件,其名稱,就能避免循環用有點髒這樣的代碼:
var file = folder.getFilesByName(name).next();
,然後與檢索ID:
var id = file.getId()

- 編輯:
如果你不確定要檢索一個文件(你不知道它是否存在或有正確的名稱....)你需要檢查文件迭代器的結果。
而是寫作:
var file = folder.getFilesByName(name);
喜歡寫:
var files = folder.getFilesByName(name); // you could have zero or more than one file
然後你就可以做一個while循環如果您認爲有多個文件與該名:

var out = []; 
while(files.hasNext()) { 
    var file = files.next(); 
    out.push(file.getId()); 
    Logger.log(file.getId()); 
} 
return out; 

或者如果只有一個或零文件一個簡單的如果將做這項工作:

if (files.hasNext()) { 
    var file = files.next(); 
    Logger.log(file.getId()); 
    return file.getIt(); // eventually 
} 
else { 
    Logger.log("there is no file with that name"); 
    return "no id"; // eventually 
} 
+0

我得到'無法檢索下一個對象:當我添加'.next()'和'var id = file.getId()'時,迭代器已經到達末尾。 while循環會是什麼樣子? 'while(file.hasNext()){get file id}'? – user4411473

+0

這意味着沒有該名稱的文件(0結果)我將更新帖子以向您顯示要執行的操作 – Harold