如何在Google Apps脚本中查找非我拥有的文件

时间:2013-04-11 08:56:06

标签: google-apps-script

在Google云端硬盘中,您可以搜索“我不拥有”的文件。 我需要从Google Apps脚本访问此内容。 我已经尝试过DocsList.find(所有者中的“不是我”);这似乎是在驱动API中做到这一点的方式,但没有成功(事实上,这让我的文件与我作为所有者。)我也用我的电子邮件地址替换了我,有和没有引号,但再次没有成功。

有没有人知道这是否可行(除了通过迭代所有文件并手动检查getOwner()。getEmail(),这将花费太长时间,因为这个特定用户拥有大量文件。)

2 个答案:

答案 0 :(得分:3)

我认为截至目前的更新答案是使用DriveApp.searchFiles(params)(https://developers.google.com/apps-script/reference/drive/drive-app#searchFiles(String))。 代码类似于:

 // Log the name of every file in the user's Drive that shared with me
 var files = DriveApp.searchFiles('sharedWithMe');
 while (files.hasNext()) {
   var file = files.next();
   Logger.log(file.getName()); 
 }

答案 1 :(得分:2)

此函数将返回与您共享的所有文件的数组。它使用Advanced Drive Service,必须为enabled before use

/**
 * Get array of files on user's Google Drive that have been shared with them.
 * From https://stackoverflow.com/a/15947340/1677912
 *
 * @returns   {Array}   Array of file resources
 *                      (see https://developers.google.com/drive/v2/reference/files#resource)
 */
function getSharedWithMe() {
  var optionalArgs = {q:"sharedWithMe=true"};
  var sharedFiles = Drive.Files.list(optionalArgs);
  debugger;  // pause in debugger
  return sharedFiles.items;
}

使用Google Drive SDK“Explorer”,您可以在没有代码的情况下执行相同的操作。

请参阅使用此技术获取已删除文件列表的this previous answer

您可以在Google文件:列表的Google云端硬盘SDK文档页面底部找到Files List API Explorer。有关搜索字词的信息,请参阅Search for files。出于我们的目的,我们只使用sharedWithMe

Screenshot query

如果您将“字段”留空,您将获得有关共享文件的所有信息。您可以使用难以看到的减号标签展开和折叠结果。但限制输出是有帮助的。我用了items(id,selfLink,owners/displayName)。这是看起来的样子:

Screenshot results