Como visualizar a pasta pai de um documento do Google?

91

Muitas vezes, tenho o link direto para um documento do Google (meu ou um organizacional compartilhado) e quero encontrar documentos armazenados na mesma pasta. Para fazer isso, eu precisaria determinar a pasta em que o documento está.

Existe uma maneira de fazer isso?

Claus
fonte

Respostas:

72

Um documento pode estar em várias pastas, mas você pode obter uma lista delas através da interface do usuário.

Clique no ícone da pasta ao lado do título do documento. Se o documento estiver em uma única pasta, você poderá ver a pasta que mostra o nome da pasta com um ícone para abrir a pasta em uma nova guia, outros documentos na pasta e opções para mover o documento atual:

insira a descrição da imagem aqui

Se o documento estiver em mais de uma pasta, você obterá uma lista das pastas em que está com hiperlinks para cada uma.

Captura de tela de duas pastas pai

pkaeding
fonte
16
Lembro-me que esse "ícone de pasta" estava lá há um tempo, mas já se foi. Alguém sabe como encontrar a pasta pai no novo design?
Mike Eng
2
O ícone da pasta parece estar de volta agora.
Vidar S. Ramdal 4/14
4
O texto "Este item está em:" foi movido para a caixa de diálogo que aparece depois que você clica no "ícone da pasta". Infelizmente, isso não parece funcionar para arquivos que você não criou.
Jedidja 04/04
14
UI do Google Drive é uma bagunça ...
Franck Dernoncourt
3
@Jangari Sim, por mais absurdo que seja, você obtém hiperlinks se o documento estiver em várias pastas, mas nenhum hiperlink se o documento estiver em apenas uma pasta. Recomendamos que você envie os comentários deste produto ao Google. Talvez eles mudem se receberem feedback suficiente do tipo. google.com/tools/feedback/intl/pt
Mike Eng
14

Está faltando o ícone da pasta?

Se você encontrar essa pequena pasta faltando à direita do nome do arquivo, poderá escolher File > Document details...pelo menos ver o nome do diretório pai. Por exemplo:

Quando o ícone da pequena pasta está ausente ...

E você encontrará onde diabos Waldo está. Eu me encontrei no mundo-2!

broc.seib
fonte
5

Vamos fornecer um meio de ir para a pasta pai do documento com um clique do mouse.

Coloque o script abaixo no editor de script 'contido em contêiner' do seu documento. Faça isso abrindo o documento e, na barra de menus do documento, selecione Ferramentas> Editor de scripts ...

Se for a primeira vez que edita o script desse documento, o código padrão preencherá a tela do editor. Simplesmente substitua o conteúdo do script pelo código abaixo. Inclua as funções onOpen () e listParentFolders () listadas abaixo.

Salve o script no editor e, em seguida, atualize a janela de navegação que exibe o documento associado. Um novo item de menu será exibido para o documento chamado Utils. Clicar no teclado Menu Utils exibirá o pop-up do menu Mostrar caminho. Este script exibirá o caminho do diretório como uma lista de hiperlinks.

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);
}
Desenhado
fonte
E se o meu documento for um arquivo do PowerPoint (que não seja do Google Apps) no Google Drive?
Fuhrmanator 23/03
O @Fuhrmanator acessa-o com a API do DriveApp e não com o DocumentApp; cada arquivo possui um tipo de mimet (tipo de arquivo) no Drive, no qual você pode encontrá-lo, além de um ID de arquivo exclusivo.
Louis Maddox
Especificamente, para uma pasta com ID id, conjunto source_folder = DriveApp.getFolderById(id)e uso conhecidos source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)ou ...MimeType.MICROSOFT_POWERPOINT_LEGACY(ou você pode usar a cadeia de caracteres mime real que a última parte avalia). Consulte a documentação aqui
Louis Maddox
5

Desde 04-04-2014, existem algumas maneiras de passar de um documento para a pasta que o contém.

No documento aberto, clique no ícone da pasta ao lado do título do documento. Uma caixa de diálogo é exibida com "Este item está em" e o nome da pasta que contém. O nome da pasta está vinculado à pasta. Se uma caixa de diálogo "Mover para" for exibida, a pasta que contém o documento é a raiz. Se é o seu documento ou se você o adicionou explicitamente, está em Meu Drive. Caso contrário, tente Mais> Todos os itens na lista de pastas à esquerda da exibição da lista de documentos.

Na exibição de pesquisa de documento, selecione o item. Mais> Detalhes e atividade> Detalhes> Pastas. Quaisquer nomes de pastas listados estão vinculados às pastas correspondentes.

Desde 03/12/2014, não consigo mais descobrir como ir de uma exibição de arquivo para a pasta que contém, para arquivos que não são documentos colaborativos do Google. Comente ou edite esta resposta se você souber.

Matt McClure
fonte
2

AFAIK não, não há como fazer isso a partir do URL do documento ou do próprio documento. Você precisaria pegar o título do documento e procurá-lo na visualização da lista do Drive. Os resultados da pesquisa devem mostrar o título do documento e também mostrar o nome da pasta pai em cinza.

OnenOnlyWalter
fonte
Uma volta, mas é uma solução. Obrigado!
Claus
1
Útil apenas se o nome da pasta pai for único. Nem sempre é o caso ...
Fuhrmanator 23/03
@ Fuumanator ainda é útil se o nome da pasta pai não for exclusivo, basta pesquisar em todas as pastas (o que pode ser difícil se o número de pastas for grande, mas ainda assim).
Thomasw
1

Pasta pai

Eu escrevi um pequeno script que recupera a pasta pai, com base na chave do documento:

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;
}

Se parece com isso

insira a descrição da imagem aqui

Para instalar

  1. vá para script.google.com , enquanto estiver conectado
  2. iniciar um novo script
  3. cole o código e pressione o ícone do bug. Pressione autorizar.
  4. em file>menaged versionsalvar o script.
  5. vá para Publish>Deploy as web appe pressione update
  6. o URL apresentado (exec no final) permitirá que você execute o script independente.

Nota

Somente a pasta pai é mencionada (exatamente o que você queria), mas não divulgará o caminho completo.

Jacob Jan Tuinstra
fonte
1

ATUALIZAÇÃO: o Google retirou essas APIs, então cuidado.

NOTA: isso realmente não é mais necessário usando a nova interface do usuário da unidade ...

  1. quando você pesquisar ou tiver alguma lista de documentos, selecione o arquivo que deseja encontrar
  2. clique no botão [i] (informações) no canto superior direito
  3. clique em "Detalhes" (vs "Atividade" padrão)
  4. você verá o compartilhamento e onde está armazenado, etc.

Percebi que isso já foi respondido, mas, caso as pessoas o encontrem enquanto pesquisavam (eu fiz), adicionarei algumas. Se você é novo no Google App Script, consulte este link .

Graças a @Jacob Jan Tuinstra e @Drawn por seus scripts, mas nem era exatamente o que eu precisava, então usei os dois para criar o meu. O script abaixo precisa ser colado em um editor de scripts do GApps e publicado como um aplicativo da web. O link deve ser salvo / marcado para reutilização posterior:

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;
}

A interface do usuário fica assim: UI do script

Observe que o ID de um arquivo vem de seu URL - ou seja, consulte "<...>" no exemplo de URL abaixo:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
kgingeri
fonte
Exatamente o que eu preciso; infelizmente, o Google descontinuou a UiApp em 11 de dezembro de 2014, portanto isso precisará ser reescrito em algum momento. Esse é o problema dos serviços em nuvem, nada funciona por muito tempo, você está à mercê deles.
Ed Randall
Sim, de fato, @EdRandall.
Atualizo
1

Aqui está uma implementação mais completa e confiável dos dois scripts nestas respostas ( primeiro e segundo ) para esta pergunta. Esse script permite colar o URL completo do arquivo ou o ID do arquivo na primeira caixa de edição da caixa de diálogo e, em seguida, retorna uma representação de texto do caminho, bem como um link para o diretório pai. As instruções de instalação são idênticas às mostradas acima por Jacob , copiei-as abaixo para garantir a integridade.

NOTA: Algumas das APIs usadas em todos esses scripts agora estão obsoletas. Eles ainda estão trabalhando quando este post foi feito, mas provavelmente parará de funcionar no futuro.

//
// Take a Google Drive file URL or ID and output a string representation of the path as well as a link
// to the parent folder
//
// Based on https://webapps.stackexchange.com/questions/43881/how-to-view-the-parent-folder-of-a-google-document

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

  // set labels for first column
  grid.setWidget(1, 0, app.createLabel("URL or file ID: ").setStyleAttribute('fontWeight', 'bold'));
  grid.setWidget(2, 0, app.createLabel("Folder Path: ").setStyleAttribute('fontWeight', 'bold'));
  grid.setWidget(3, 0, app.createLabel("Folder URL: ").setStyleAttribute('fontWeight', 'bold'));

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

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

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

//
// getIdFromUrl - Get the file id portion of the url.  If the file id itself is passed in it will match as well
//
// From http://stackoverflow.com/questions/16840038/easiest-way-to-get-file-id-from-url-on-google-apps-script
// This regex works for any google url I've tried: Drive url for folders and files, Fusion Tables, Spreadsheets,
// Docs, Presentations, etc. It just looks for anything in a string that "looks like" a Google key. That is, any
// big enough string that has only (google key) valid characters in it.
//
// Also, it works even if it receives the ID directly, instead of the URL. Which is useful when you're asking
// the link from the user, as some may paste the id directly instead of the url and it still works.

function getIdFromUrl(url) {
  return url.match(/[-\w]{25,}/);
}

function listParentFolders(e) {
  var app      = UiApp.createApplication(); 
  var key      = getIdFromUrl(e.parameter.key);
  var theFile  = DriveApp.getFileById(key);
  var parents  = theFile.getParents();
  var fileName = theFile.getName();

  // no folders
  if ( parents == null ) {
    app.getElementById("path").setValue('Unknown file');
    return app;
  }

  var url;
  var folder;
  var folderName;
  var path;

  // traverse the list of parents of folders to build the path
  while (parents.hasNext()){
    folder     = parents.next();
    folderName = folder.getName();

    // on the first pass get the URL of the folder which is the parent folder of the file
    if (url == null)
      url = folder.getUrl();

    // build up a string version of the path
    if (path == null)
      path = folderName;
    else
      path = folderName + ' / ' + path;

    // get the parent of the current folder
    parents = folder.getParents();
  }

  app.getElementById("path").setValue(path);
  app.getElementById("url").setHref(url).setText(url);

  return app;
}

Se parece com isso:

Localizar interface do usuário da pasta pai

Para instalar:

  1. vá para script.google.com , enquanto estiver conectado
  2. iniciar um novo script
  3. cole o código e pressione o ícone do bug. Pressione autorizar.
  4. em arquivo> versão gerenciada, salve o script.
  5. vá para Publicar> Implante como aplicativo Web e pressione atualizar
  6. o URL apresentado (exec no final) permitirá que você execute o script independente.
Greg L.
fonte
1
Apenas uma observação: "acima" não tem realmente nenhum contexto nas respostas, pois as respostas podem ser classificadas de maneiras diferentes. Melhor vincular às respostas às quais você está se referindo.
ale
Obrigado Al, sou novo no StackExchange. Eu removi a referência "acima" e usei os links.
Greg L.
-2

O Google já forneceu uma solução para isso:

Suponhamos que você esteja procurando um documento em PDF chamado myreport.pdf.

Você procura meu relatório, obtém uma lista de documentos que atendem aos critérios.

Se você deseja saber a pasta em que está, basta clicar com o botão direito e clicar em Localizar em Meu disco .

Rajiv Jowaheer
fonte