¿Cómo ver la carpeta principal de un documento de Google?

91

A menudo tengo el enlace directo a un documento de Google (el mío o uno compartido de la organización) y quiero encontrar documentos que estén almacenados en la misma carpeta. Para hacerlo, necesitaría determinar la carpeta en la que se encuentra el documento.

¿Hay una manera de hacerlo?

Claus
fuente

Respuestas:

72

Un documento puede estar potencialmente en varias carpetas, pero puede obtener una lista de ellos a través de la interfaz de usuario.

Haga clic en el icono de la carpeta al lado del título del documento. Si el documento está en una sola carpeta, obtendrá una vista en esa única carpeta que muestra el nombre de la carpeta con un icono para abrir la carpeta en una nueva pestaña, otros documentos en la carpeta y opciones para mover el documento actual:

ingrese la descripción de la imagen aquí

Si el documento está en más de una carpeta, obtendrá una lista de las carpetas en las que está con hipervínculos a cada una.

Captura de pantalla de dos carpetas principales

pkaeding
fuente
16
Recuerdo que este "icono de carpeta" estuvo allí hace un tiempo, pero ya no está. ¿Alguien sabe cómo encontrar la carpeta principal en el nuevo diseño?
Mike Eng
2
El icono de la carpeta parece estar de vuelta ahora.
Vidar S. Ramdal
44
El texto "Este elemento está en:" ahora se ha movido al diálogo que aparece después de hacer clic en el "icono de la carpeta". Desafortunadamente, esto no parece funcionar para archivos que no ha creado.
Jedidja
14
La interfaz de usuario de Google Drive es un desastre ...
Franck Dernoncourt
3
@ Jangari Sí, por absurdo que sea, obtienes hipervínculos si el documento está en varias carpetas, pero no hay hipervínculo si el documento está solo en una carpeta. Le recomiendo que envíe sus comentarios sobre este producto a Google. Tal vez lo cambiarán si obtienen suficientes comentarios de ese tipo. google.com/tools/feedback/intl/en
Mike Eng
14

¿Falta el icono de carpeta?

Si encuentra que falta esa pequeña carpeta a la derecha del nombre del archivo, puede elegir File > Document details...al menos ver el nombre del directorio principal. P.ej:

Cuando falta el pequeño icono de carpeta ...

Y encontrarás dónde demonios está Waldo. Me encontré en el mundo 2!

broc.seib
fuente
5

Proporcionemos un medio para ir a la carpeta principal del documento con un clic del mouse.

Coloque la secuencia de comandos a continuación en el editor de secuencias de comandos 'enlazado al contenedor' de su documento. Para ello, abra su documento y luego, en la barra de menú del documento, seleccione Herramientas> Editor de secuencias de comandos ...

Si es la primera vez que edita el script de ese documento, el código predeterminado llenará la pantalla del editor. Simplemente reemplace el contenido del script con el siguiente código. Incluya la función onOpen () y listParentFolders () que se enumeran a continuación.

Guarde la secuencia de comandos en el editor y luego 'actualice' la ventana de exploración que muestra el documento asociado. Aparecerá un nuevo elemento de menú para el documento denominado Utils. Al hacer clic en el botón Menú de utilidades, aparecerá la ventana emergente del menú, Mostrar ruta. Este script mostrará la ruta del directorio como una lista de hipervínculos.

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);
}
Dibujado
fuente
¿Qué sucede si mi documento es un archivo de PowerPoint (no aplicaciones de Google) en Google Drive?
Fuhrmanator
@Fuhrmanator accede con la API de DriveApp, no con DocumentApp, cada archivo tiene un tipo MIME (tipo de archivo) en Drive donde puedes encontrarlo, así como un ID de archivo único.
Louis Maddox
Específicamente, para una carpeta de identificación id, conjunto source_folder = DriveApp.getFolderById(id)y uso conocidos source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)o ...MimeType.MICROSOFT_POWERPOINT_LEGACY(o puede usar la cadena de tipo mime real a la que se evalúa la última parte). Ver documentos aquí
Louis Maddox
5

A partir del 04/04/2014, hay un par de formas de pasar de un documento a su carpeta que lo contiene.

Desde el documento abierto, haga clic en el icono de la carpeta al lado del título del documento. Aparece un cuadro de diálogo con "Este elemento está en" y el nombre de la carpeta que lo contiene. El nombre de la carpeta está vinculado a la carpeta. Si aparece un cuadro de diálogo "Mover a", la carpeta que contiene el documento es la raíz. Si es su documento o lo ha agregado explícitamente, está en Mi unidad. De lo contrario, intente Más> Todos los elementos en la lista de carpetas a la izquierda de la vista de lista de documentos.

Desde la vista de búsqueda de documentos, seleccione el elemento. Más> Detalles y actividad> Detalles> Carpetas. Todos los nombres de carpetas enumerados están vinculados a las carpetas correspondientes.

A partir del 2014-12-03, ya no puedo descubrir cómo pasar de una vista de archivo a la carpeta que lo contiene, para archivos que no son documentos de colaboración de Google. Comenta o edita esta respuesta si sabes cómo.

Matt McClure
fuente
2

AFAIK no, no hay forma de hacerlo desde la URL del documento o el documento en sí. Debería obtener el título del documento y buscarlo en la vista de lista de Drive. Los resultados de la búsqueda deberían mostrarle el título del documento, luego también mostrar el nombre de la carpeta principal en gris.

OnenOnlyWalter
fuente
Un camino redondo pero es una solución. ¡Gracias!
Claus
1
Solo es útil si el nombre de la carpeta principal es único. No siempre es el caso ...
Fuhrmanator
@Fuhrmanator todavía es útil si el nombre de la carpeta principal no es único, solo necesita buscar en todas las carpetas (lo que puede ser difícil si el número de carpetas es grande, pero aún así).
ThomasW
1

Carpeta principal

Escribí un pequeño script que recupera la carpeta principal, según la clave del 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 a esto

ingrese la descripción de la imagen aquí

Instalar

  1. ir a script.google.com , mientras está conectado
  2. comenzar un nuevo script
  3. pegue el código y presione el ícono de error. Presione autorizar.
  4. debajo de file>menaged versionguardar el guión.
  5. Ir a Publish>Deploy as web appy actualizar la prensa
  6. la url presentada (exec al final) le permitirá ejecutar el script independiente.

Nota

Solo se menciona la carpeta principal (exactamente lo que quería) pero no revelará la ruta completa.

Jacob Jan Tuinstra
fuente
1

ACTUALIZACIÓN: Google ha retirado estas API, así que ten cuidado.

NOTA: esto realmente ya no es necesario con la nueva interfaz de usuario de la unidad ...

  1. cuando busque o tenga una lista de documentos, haga un lite del archivo que encuentre
  2. haga clic en el botón [i] (información) en la esquina superior derecha
  3. haga clic en "Detalles" (vs "Actividad" predeterminada)
  4. verá compartir y dónde se almacena, etc.

Me di cuenta de que esto ya ha sido respondido, pero en caso de que las personas lo encuentren mientras buscan (lo hice) agregaré algunos. Si eres nuevo en Google App Script, mira este enlace .

Gracias a @Jacob Jan Tuinstra y @Drawn por sus guiones, pero ninguno de los dos era lo que necesitaba, así que usé los dos para crear el mío. La secuencia de comandos a continuación debe pegarse en un editor de secuencias de comandos GApps y luego publicarse como una aplicación web. El enlace debe guardarse / marcado para su posterior reutilización:

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

La interfaz de usuario se ve así: UI de script

Tenga en cuenta que la ID de un archivo proviene de su URL, es decir, consulte "<...>" en el ejemplo de URL a continuación:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
kgingeri
fuente
Exactamente lo que necesito; lamentablemente Google desaprobó UiApp el 11 de diciembre de 2014, por lo que será necesario volver a escribirlo en algún momento. Ese es el problema con los servicios en la nube, nada funciona por mucho tiempo, estás a su merced.
Ed Randall
Sí, de hecho @EdRandall. Actualizaré esto en el original - thx
kgingeri
1

Aquí hay una implementación más completa y confiable de los dos scripts en estas respuestas ( primera y segunda ) a esta pregunta. Este script le permite pegar la URL completa del archivo o la ID del archivo en el primer cuadro de edición en el cuadro de diálogo y luego devuelve una representación de texto de la ruta, así como un enlace al directorio principal. Las instrucciones de instalación son idénticas a las que Jacob muestra arriba . Las copié a continuación para completarlas.

NOTA: Algunas de las API utilizadas en todos estos scripts ahora están obsoletas. Todavía están funcionando cuando se hizo esta publicación, pero probablemente dejarán de funcionar en el 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 a esto:

Encuentra la carpeta principal UI

Instalar:

  1. ir a script.google.com , mientras está conectado
  2. comenzar un nuevo script
  3. pegue el código y presione el ícono de error. Presione autorizar.
  4. bajo archivo> versión gestionada, guarde el script.
  5. Ir a Publicar> Implementar como aplicación web y presionar actualizar
  6. la url presentada (exec al final) le permitirá ejecutar el script independiente.
Greg L.
fuente
1
Solo una nota: "arriba" realmente no tiene ningún contexto en las respuestas, ya que las respuestas se pueden ordenar de diferentes maneras. Es mejor vincular a las respuestas a las que se refiere.
cerveza
Gracias Al, soy nuevo en StackExchange. Eliminé la referencia "anterior" y usé enlaces en su lugar.
Greg L.
-2

Google ya ha proporcionado una solución para eso:

Supongamos que busca un documento pdf llamado myreport.pdf.

Busca myreport, obtiene una lista de documentos que satisfacen los criterios.

Si desea conocer la carpeta en la que se encuentra, simplemente haga clic derecho y haga clic en Localizar en mi unidad .

Rajiv Jowaheer
fuente