GDrive 搜索 MyDrive 中所有共享的文件

问题描述 投票:0回答:1

我创建了这个脚本:

function listAllFiles() {
  var MyAccount = Session.getActiveUser().getEmail();
  var files = DriveApp.getFiles();
  var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
  }
}

如何扩展我的过滤器,以便取回属于我的且已共享的所有文件/目录?

谁能给我一个简短的例子?

谢谢

function listAllFiles() {
  var MyAccount = Session.getActiveUser().getEmail();
  var files = DriveApp.getFiles();
  var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
  }
}
google-apps-script google-drive-api
1个回答
0
投票

现阶段似乎还没有直接搜索自己拥有的共享文件的查询。 Ref 所以,在这种情况下,需要修改脚本。在你的展示脚本中,做如下修改怎么样?

修改后的脚本1:

在此修改中,使用了Drive服务(DriveApp)。

function listAllFiles() {
  var MyAccount = Session.getActiveUser().getEmail();
  var files = DriveApp.getFiles();
  var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
  while (files.hasNext()) {
    var file = files.next();
    if (file.getSharingAccess() != DriveApp.Access.PRIVATE || file.getEditors().length > 0 || file.getViewers().length > 0) {
      Logger.log(file.getName());
    }
  }
}
  • 运行此脚本时,将检索您拥有的所有共享文件。

修改后的脚本2:

作为另一种方法,在本次修改中,使用了 Drive API v3。因此,请在高级 Google 服务中启用 Drive API v3

function listAllFiles2() {
  var MyAccount = Session.getActiveUser().getEmail();
  let fileList = [];
  let pageToken;
  do {
    const obj = Drive.Files.list({ q: `'${MyAccount}' in owners and mimeType != 'application/vnd.google-apps.folder' and trashed=false`, pageToken, pageSize: 1000, fields: "nextPageToken,files(id,name,shared)" });
    if (obj.files.length > 0) {
      fileList = [...fileList, ...obj.files.filter(({ shared }) => shared && shared === true)];
    }
    pageToken = obj.nextPageToken;
  } while (pageToken);
  const fileNames = fileList.map(({name}) => name);
  console.log(fileNames)
}

注:

  • 在您的显示脚本中,您似乎需要文件名。因此,在此修改中,将检索文件名。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.