4

在 Google Drive 中,可以搜索“不属于我”的文件。我需要从 Google Apps 脚本访问它。我已经尝试过 DocsList.find("Not 'me' in owner"); 这似乎是在驱动器 API 中执行此操作的方法,但没有成功(事实上,这让我作为所有者获得了我的文件。)我还用我的电子邮件地址替换了我,带引号和不带引号,但再次没有成功。

有谁知道这是否可能(除了通过迭代所有文件并手动检查 getOwner().getEmail() 之外,鉴于此特定用户拥有大量文件,这将花费太长时间。)

4

2 回答 2

5

我认为目前更新的答案是使用 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()); 
 }
于 2015-03-10T13:31:29.747 回答
2

此函数将返回与您共享的所有文件的数组。它使用高级驱动服务,使用前必须启用该服务。

/**
 * 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”,您无需代码也可以做同样的事情。

请参阅使用此技术获取已删除文件列表的先前答案。

您可以在Files:list 的 Google Drive SDK 文档页面底部找到Files List API Explorer 。有关搜索词的信息,请参阅搜索文件。出于我们的目的,我们将只使用sharedWithMe.

截图查询

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

截图结果

于 2013-04-11T11:15:16.883 回答