从电子表格名称获取电子表格ID或网址
问题描述:
我在谷歌驱动器上的文件夹中有多个命名的电子表格。如何通过将某个名称传递给某个函数来获取他们的id或url?从电子表格名称获取电子表格ID或网址
我可以使用DriveApp获取文件,但是我不知道如何从中获取该文件。
function getFile(name)
{
var folder = DriveApp.getFolderById('id');
var file = folder.getFilesByName(name);
//get file id
}
有没有办法使用DriveApp或SpreadsheetApp获取id或url?
答
命令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
}
我得到'无法检索下一个对象:当我添加'.next()'和'var id = file.getId()'时,迭代器已经到达末尾。 while循环会是什么样子? 'while(file.hasNext()){get file id}'? – user4411473
这意味着没有该名称的文件(0结果)我将更新帖子以向您显示要执行的操作 – Harold