使用驱动器api搜索文件夹内的文件

时间:2017-04-03 17:53:28

标签: javascript google-apps-script google-drive-api

驾驶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);
  }

2 个答案:

答案 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