我经常直接链接到Google文档(我的文档或组织共享的文档),并希望查找存储在同一文件夹中的文档。为此,我需要确定文档所在的文件夹。

有办法吗?

#1 楼

一个文档可能位于多个文件夹中,但是您可以通过UI获得它们的列表。

单击文档标题旁边的文件夹图标。如果文档在单个文件夹中,则可以查看该单个文件夹的视图,其中显示文件夹名称,并带有图标以在新标签页中打开该文件夹,该文件夹中的其他文档以及用于移动当前文档的选项:



如果文档位于多个文件夹中,则会获得该文档所在的文件夹的列表,并带有指向每个超链接的超链接。


/>

评论


我记得这个“文件夹图标”已经存在了一段时间,但是现在已经消失了。有人知道如何在新设计中找到父文件夹吗?

–麦克·英(Mike Eng)
13-10-24在18:20

现在,“此项目位于:”文本已移动到单击“文件夹图标”后出现的对话框。不幸的是,这似乎不适用于尚未创建的文件。

–杰迪贾
2015年5月4日14:24

Google云端硬盘的用户界面太乱了……

–弗朗克·德农库尔
2015年10月13日,下午1:39

@Jangari是的,虽然毫无意义,但是如果文档位于多个文件夹中,则会获得超链接,但如果文档仅位于一个文件夹中,则不会获得超链接。鼓励您将此产品反馈意见提交给Google。如果他们得到足够的反馈,也许他们会改变它。 google.com/tools/feedback/intl/zh-CN

–麦克·英(Mike Eng)
17年6月26日在15:55

仅当您有权移动文件时,文件夹图标才可见。

– hultqvist
19/12/3在10:15

#2 楼

是否缺少文件夹图标?

如果发现文件名右侧缺少该小文件夹,则可以选择File > Document details...至少查看父目录名称。例如:



您会发现Waldo到底在哪里。


评论


此方法仅显示位置名称,不显示文件夹的URL。

–科斯
5月1日23:31

#3 楼

自2014年4月4日起,有几种方法可以将文档从文档转到其包含的文件夹。

从打开的文档中,单击文档标题旁边的文件夹图标。出现一个对话框,显示“此项目位于”和包含的文件夹名称。文件夹名称链接到该文件夹​​。如果改为显示“移至”对话框,则文档的包含文件夹为根目录。如果是您的文档或已明确添加,则在“我的云端硬盘”中。如果不是,请在文档列表视图左侧的文件夹列表中尝试More-> All Items

从文档搜索视图中选择项目。 More-> Details and activity-> Details-> Folders。列出的所有文件夹名称都链接到相应的文件夹。

从2014年12月3日起,对于那些不存在的文件,我不再想出如何从文件视图转到其包含的文件夹。协作的Google文档。如果您知道如何,请评论或编辑此答案。

#4 楼

让我们提供一种方法,只需单击鼠标即可转到文档的父文件夹。

将脚本放在文档的“容器绑定”脚本编辑器中。
通过打开您的文件夹来执行此操作文档,然后从文档菜单栏中选择工具>脚本编辑器...

如果这是您第一次编辑该文档的脚本,则默认代码将填充编辑器的屏幕。只需用下面的代码替换脚本内容。包括下面列出的函数onOpen()和listParentFolders()。

将脚本保存在编辑器中,然后“刷新”显示相关文档的浏览窗口。对于名为Utils的文档,将出现一个新的菜单项。单击“实用程序菜单”面板将显示菜单弹出窗口,显示路径。该脚本将目录路径显示为超链接列表。

function onOpen() {     
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Utils')
      .addItem('Show Path', 'listParentFolders')
      .addToUi();
}

function listParentFolders() {

  var theDocument = DocumentApp.getActiveDocument();
  var docID = theDocument.getId();
  var theFile = DocsList.getFileById(docID);
  var parents = theFile.getParents();

  // No folders
  if ( parents == null ) return;
  var folder = parents[0];
  var folderName = folder.getName();
  var folderURL = folder.getUrl();
  var folders = [[folderName,folderURL]];

  while (folderName != "Root"){
     parents = folder.getParents();
     folder = parents[0]; 
     folderName = folder.getName();
     folderURL = folder.getUrl();
     folders.unshift([folderName,folderURL]);
  }

  var app = UiApp.createApplication().setTitle("Folder Hierarchy").setHeight(250).setWidth(300); 
  var grid = app.createGrid(folders.length, 1).setStyleAttribute(0, 0, "width", "300px").setCellPadding(5);
  var indentNum = 0, link; 
  for (var fldCntr = 0; fldCntr < folders.length; fldCntr++){
     folderName = folders[fldCntr][0];
     folderURL = folders[fldCntr][1];
     link = app.createAnchor(folderName, folderURL).setId("id_" + fldCntr).setStyleAttribute("font-size", "10px");
     grid.setWidget(indentNum, 0, link);
     indentNum += 1;
  }

  app.add(grid);
  DocumentApp.getUi().showSidebar(app);
}


评论


如果我的文档是Google驱动器上的PowerPoint(非Google应用)文件怎么办?

–负责人
2014年3月23日在21:33



@Fuhrmanator使用DriveApp API而不是DocumentApp访问它,每个文件在Drive中都有一个模仿类型(文件类型),您可以在其中找到它以及唯一的文件ID。

–路易·马多克斯(Louis Maddox)
2015年3月11日14:20在

具体来说,对于已知ID id的文件夹,设置source_folder = DriveApp.getFolderById(id),然后使用source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)或... MimeType.MICROSOFT_POWERPOINT_LEGACY(或者您可以使用实际的MIME类型字符串作为后一部分)评估为)。在这里查看文档

–路易·马多克斯(Louis Maddox)
15年3月13日在1:21

如果有人可以显示如何对所有文档执行此操作(而不必手动添加每个文档,那么它将很有用)。

–ctrl-alt-delor
5月12日18:16

#5 楼

更新:文件夹图标现在已更改为移动图标,但仍然可以使用...



评论


与接受的答案相同

–科斯
5月1日12:49

好吧,文件夹图标发生了变化,我暂时感到困惑,所以我想应该将其发布为“为什么不发布” ...从“移动文件”菜单访问“打开文档位置”功能有点奇怪...

–贾斯珀·威尔芬(Jesper Wilfing)
5月1日22:28

我知道了,所以那应该只是对现有答案的修改。

–科斯
5月1日23:36

#6 楼

AFAIK不行,无法从文档URL或文档本身执行此操作。您需要获取文档标题,然后在“云端硬盘”列表视图中进行搜索。搜索结果应显示您的文档标题,然后还显示灰色的父文件夹名称。

评论


绕了一圈,但这是一个解决方案。谢谢!

–克劳斯
13年5月6日19:32

仅在您的父文件夹名称唯一时才有用。并非总是如此...

–负责人
2014年3月23日在21:33



@Fuhrmanator,如果父文件夹名称不是唯一的,它仍然很有用,您只需要搜索所有文件夹(如果文件夹数量很大,这可能会很困难,但仍然如此)。

– ThomasW
17年12月25日在2:47

#7 楼

父文件夹

我写了一个小脚本,根据文档的密钥检索父文件夹:

function doGet() {
  // create app and grid
  var app = UiApp.createApplication(); 
  var grid = app.createGrid(4,2);    

  // set labels for first column
  grid.setWidget(0, 0, app.createLabel("Add document key: ")
    .setStyleAttribute('fontWeight', 'bold'));
  grid.setWidget(2, 0, app.createLabel("Parent Folder: ")
    .setStyleAttribute('fontWeight', 'bold'));

  // set text boxes for second column
  grid.setWidget(0, 1, app.createTextBox().setId("key")
    .setName("key").setWidth(500));
  grid.setWidget(2, 1, app.createTextBox().setId("path")
    .setName("path").setWidth(500));

  // create button and handler
  grid.setWidget(3, 0, app.createButton("PATH")
    .addClickHandler(app.createServerHandler("getPath")
    .addCallbackElement(grid)));

  // add grid to application and show app
  app.add(grid);
  return app;
}

function getPath(e) {
  // get active application and key
  var app = UiApp.getActiveApplication();
  var key = e.parameter.key;  

  // Get file and path
  var path;
  try {
    var file = DocsList.getFileById(key);
    path = file.getParents()[0].getName(); 
  } catch(e) {
    path = "file not found";
  }

  // add path to application and update app
  app.getElementById("path").setValue(path);
  return app;
}


它看起来像这样



要安装


在登录后转到script.google.com
启动新脚本
粘贴代码,然后按错误图标。按授权。
file>menaged version下保存脚本。
转到Publish>Deploy as web app并按更新
显示的URL(末尾执行)将允许您运行独立脚本。

注意

仅提及父文件夹(正是您想要的),但不会透露完整路径。

#8 楼

在此问题的这些答案(第一个和第二个)中,这是两个脚本的更完整和可靠的实现。该脚本允许您将文件的完整URL或文件ID粘贴到对话框的第一个编辑框中,然后返回路径的文本表示形式以及到父目录的链接。安装说明与Jacob上面显示的相同,为完整起见,我在下面复制了它们。

注意:所有这些脚本中使用的某些API现在已过时。他们在撰写本文时仍在工作,但将来可能会停止工作。 >

要安装:


登录后转到goto script.google.com
启动新脚本
粘贴代码并按错误图标。按下授权。
在文件下>所需的版本保存脚本。
转到发布>部署为Web应用程序并按下更新
出现的URL(末尾执行)将允许您运行支架-a-lone脚本。


评论


请注意:答案上方并没有任何上下文,因为答案可以以不同的方式排序。最好链接到您要参考的答案。

–ale
2015年6月9日在12:29

感谢Al,我是StackExchange的新手。我删除了“以上”参考,而是使用了链接。

– Greg L.
2015年6月9日在21:25

#9 楼

更新:谷歌已经淘汰了这些API,所以要当心。

注意:使用新的驱动器UI确实不再需要此操作。要找到
,请单击右上角的[i](信息)按钮
单击“详细信息”(与默认的“活动”相对)
您将看到共享及其存储位置等

我意识到这个问题已经得到解决,但以防万一人们在搜索时发现它(像我一样),我将添加更多信息。如果您不熟悉Google App脚本,请参见此链接。

感谢@Jacob Jan Tuinstra和@Drawn提供了他们的脚本,但是我都不需要,所以我用他们两个来创建我的。下面的脚本需要粘贴到GApps脚本编辑器中,然后作为Web应用发布。链接应保存/标记为以后重用:

function doGet() {

  // create app and grid
  var app = UiApp.createApplication(); 
  var grid = app.createGrid(4,2);    

  // set labels for first column
  grid.setWidget(1, 0, app.createLabel("Document's key: ")
    .setStyleAttribute('fontWeight', 'bold'));
  grid.setWidget(2, 0, app.createLabel("Folder Path: ")
    .setStyleAttribute('fontWeight', 'bold'));

  // set text boxes for second column
  grid.setWidget(1, 1, app.createTextBox().setId("key")
    .setName("key").setWidth(500));
  grid.setWidget(2, 1, app.createTextBox().setId("path")
    .setName("path").setWidth(500));

  // create button and handler
  grid.setWidget(3, 0, app.createButton("Find")
    .addClickHandler(app.createServerHandler("listParentFolders")
    .addCallbackElement(grid)));

  // add grid to application and show app
  app.add(grid);
  return app;
}


function listParentFolders(e) {

  var app  = UiApp.createApplication(); 
  var path = '';

  var key     = e.parameter.key;  
  var theFile = DocsList.getFileById(key);
  var parents = theFile.getParents();

  // No folders
  if ( parents == null ) {
    app.getElementById("path").setValue('unknown');
    return app;
  }
  var folder     = parents[0];
  var folderName = folder.getName();
  var folders    = [[folderName]];

  try {
    folderName = parents[0].getName();
  }
  catch(error)
  {
    app.getElementById("path").setValue('(unknown - shared document)');
    return app; 
  }

  while (folderName != "Root"){

    parents    = folder.getParents();
    folder     = parents[0];
    folderName = folder.getName();

    // we are going in reverse - build list in other direction
    folders.unshift([folderName]);
  }

  // built path list
  var indentNum = 0;
  for (var fldrCntr = 0; fldrCntr < folders.length; fldrCntr++){

    folderName = folders[fldrCntr][0];
    if(fldrCntr == 0) {
      path  = 'My Drive';  // ...instead of 'Root'
    } else {
      path += ' / ' + folderName;
    }

    indentNum += 1;
  }

  app.getElementById("path").setValue(path);

  return app;
}


UI如下所示:


注意文件的ID来自其URL,即在下面的URL示例中看到“ <...>”:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0


评论


正是我所需要的;遗憾的是Google于2014年12月11日弃用了UiApp,因此在某些时候需要重新编写。这就是云服务的麻烦,长期没有任何作用,您任由他们摆布。

– Ed Randall
15年2月4日在10:43

是的,确实是@EdRandall。我将在原始版本中对此进行更新-THX

– kgingeri
2015年2月5日14:41

#10 楼

自2020年4月起,要查找文档的位置:


复制文档文件名
在Google云端硬盘中搜索文件
在搜索中选择它结果
打开右侧的信息面板(查看详细信息)
您可以在位置旁边找到文件所在的可点击文件夹。


评论


看起来只有文件名是唯一的,它才起作用。

–ctrl-alt-delor
5月12日18:23

#11 楼

Google已经提供了解决方案:

假设您正在寻找一个名为myreport.pdf的pdf文档。

搜索myreport,您会得到一个文档列表,满足条件。

如果您想知道它所在的文件夹,只需右键单击并单击“在我的云端硬盘中定位”。

评论


看起来只有文件名是唯一的,它才起作用。

–ctrl-alt-delor
5月12日18:24