驾驶api:https://developers.google.com/drive/v2/reference/files/list
我正在尝试获取我所拥有的电子表格的ID,但Logger.log()会返回多个id而不是一个id。我认为它是从谷歌驱动器的最近部分获得具有相同名称的文件。
我不知道如何解决这个问题,我们将不胜感激。
有没有办法只使用驱动器api搜索文件夹内的文件?或者我如何排除最近部分中的文件,只搜索我的驱动器中的文件?
代码片段:
//get spreadsheet
var nameId;
var allFiles = Drive.Files.list({
q: "title='" + name + "' and trashed=false"
}).items;
for (var i = 0; i < allFiles.length; i++)
{
if (allFiles[i].title == name)
{
Logger.log("true");
nameId = allFiles[i].id;
Logger.log("returnTemplatedTable -- name id: " + nameId);
}
else
{
Logger.log("false");
}
}
var spreadsheet = SpreadsheetApp.openById(nameId).getActiveSheet();
这是我将代码移动到文件夹的代码片段:
//move spreadsheet to folder
Drive.Files.update({
"parents": [
{
"id": folderId
}
]
}, fileId);
但我怎样才能搜索文件夹呢?
var list = Drive.Files.list({
"folderId": folderId,
q: "title='" + name + "' and trashed=false"
}).items;
for (var i = 0; i < list.length; i++)
{
Logger.log("id: " + list[i].id);
}
答案 0 :(得分:0)
这使用驱动器api查找文件夹中所有文件的名称。
function findFilesInFolder() {
var folderId = 'folderId'
//searches for children of a folder
var childrenData = Drive.Children.list(folderId)
var children = childrenData.items;
//loops through the children and gets the name of each one
for (var i = 0; i < children.length; i++){
var id = children[i].id;
var file = Drive.Files.get(id);
Logger.log(file.title)
}
}
答案 1 :(得分:0)
这是一种更简单的方法,使用searchFiles(params)
获取用户的云端硬盘中与之匹配的所有文件的集合 给定搜索条件。搜索条件详细说明了Google 驱动SDK文档。请注意,params参数是一个查询 可能包含字符串值的字符串,因此请小心转义 引号正确(例如“title contains'Gulliver \'s 旅行'或'标题包含“格列佛游记”'。
这是我试过的一个片段:
function searchForeFile(){
var files = DriveApp.searchFiles(
'modifiedDate > "2013-02-28" and title contains "Gene Simmons"');
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
}
确实它返回了我正在寻找的文件:
[17-04-03 21:43:26:736 PDT] Gene Simmons KISS.pdf