2016-09-14 56 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