Come visualizzare la cartella principale di un documento Google?


91

Spesso ho il collegamento diretto a un documento Google (il mio o uno condiviso dell'organizzazione) e voglio trovare documenti archiviati nella stessa cartella. Per fare ciò, dovrei determinare la cartella in cui si trova il documento.

C'è un modo per farlo?

Risposte:


72

Un documento può potenzialmente trovarsi in più cartelle, ma puoi ottenerne un elenco tramite l'interfaccia utente.

Fai clic sull'icona della cartella accanto al titolo del documento. Se il documento si trova in una singola cartella, si ottiene una vista in quella singola cartella che mostra il nome della cartella con un'icona per aprire la cartella in una nuova scheda, altri documenti nella cartella e opzioni per spostare il documento corrente:

inserisci qui la descrizione dell'immagine

Se il documento si trova in più di una cartella, si ottiene un elenco delle cartelle in cui si trova con collegamenti ipertestuali a ciascuna.

Schermata di due cartelle principali


16
Ricordo che questa "icona della cartella" era lì qualche tempo fa, ma ora non c'è più. Qualcuno sa come trovare la cartella principale nel nuovo design?
Mike Eng,

2
L'icona della cartella sembra essere tornata ora.
Vidar S. Ramdal

4
Il testo "Questo elemento è in:" ora è stato spostato nella finestra di dialogo che appare dopo aver fatto clic sull'icona "cartella". Sfortunatamente, questo non sembra funzionare per i file che non hai creato.
Jedidja,

14
L'interfaccia utente di Google Drive è un tale casino ...
Franck Dernoncourt,

3
@Jangari Sì, per quanto assurdo sia, si ottengono collegamenti ipertestuali se il documento si trova in più cartelle, ma nessun collegamento ipertestuale se il documento si trova solo in una cartella. Ti incoraggio a inviare questo feedback sul prodotto a Google. Forse lo cambieranno se ricevono abbastanza feedback del genere. google.com/tools/feedback/intl/en
Mike Eng,

14

Manca l'icona della cartella?

Se trovi quella piccola cartella mancante alla destra del nome del file, allora puoi scegliere File > Document details...di vedere almeno il nome della directory principale. Per esempio:

Quando manca l'icona della piccola cartella ...

E troverai dove diavolo è Waldo. Mi sono trovato nel mondo 2!


5

Forniamo un mezzo per accedere alla cartella principale del documento con un clic del mouse.

Posiziona lo script in basso nell'editor di script "associato al contenitore" del documento. A tale scopo, apri il documento e dalla barra dei menu del documento seleziona Strumenti> Editor di script ...

Se è la prima volta che modifichi lo script di quel documento, il codice predefinito popolerà la schermata dell'editor. Sostituisci semplicemente il contenuto dello script con il codice seguente. Includi sia la funzione onOpen () che listParentFolders () elencati di seguito.

Salvare lo script nell'editor e quindi "aggiornare" la finestra di esplorazione che mostra il documento associato. Verrà visualizzata una nuova voce di menu per il documento denominato Utils. Facendo clic sul pad Menu Utilità verrà visualizzato il menu a comparsa, Mostra percorso. Questo script visualizzerà il percorso della directory come un elenco di collegamenti ipertestuali.

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

Che cosa succede se il mio documento è un file PowerPoint (non Google Apps) su Google Drive?
Fuhrmanator,

@Fuhrmanator accede ad esso con API DriveApp non DocumentApp, ogni file ha un tipo di file (tipo di file) in Drive su cui puoi trovarlo e un ID file univoco.
Louis Maddox,

In particolare, per una cartella di ID noto id, impostare source_folder = DriveApp.getFolderById(id)e utilizzare source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)o ...MimeType.MICROSOFT_POWERPOINT_LEGACY(oppure è possibile utilizzare la stringa di tipo mime effettiva valutata dall'ultima parte). Vedi i documenti qui
Louis Maddox,

5

A partire dal 04-04-2014, ci sono un paio di modi per passare da un documento alla sua cartella contenente.

Dal documento aperto, fai clic sull'icona della cartella accanto al titolo del documento. Viene visualizzata una finestra di dialogo con "Questa voce è in" e il nome della cartella contenente. Il nome della cartella è collegato alla cartella. Se viene invece visualizzata una finestra di dialogo "Sposta in", la cartella contenente il documento è la radice. Se è il tuo documento o l'hai aggiunto esplicitamente, è in I miei file. In caso contrario, prova Altro> Tutti gli elementi nell'elenco delle cartelle a sinistra della vista elenco documenti.

Dalla vista di ricerca del documento, selezionare l'elemento. Altro> Dettagli e attività> Dettagli> Cartelle. Tutti i nomi di cartelle elencati sono collegati alle cartelle corrispondenti.

A partire dal 03-12-2014, non riesco più a capire come passare dalla vista di un file alla sua cartella contenente, per i file che non sono documenti Google collaborativi. Commenta o modifica questa risposta se sai come fare.


2

AFAIK no, non è possibile farlo dall'URL del documento o dal documento stesso. Dovresti prendere il titolo del documento e cercarlo nella visualizzazione dell'elenco di Drive. I risultati della ricerca dovrebbero mostrare il titolo del documento, quindi anche il nome della cartella principale in grigio.


Un giro intorno ma è una soluzione. Grazie!
Claus

1
Utile solo se il nome della cartella principale è univoco. Non sempre il caso ...
Fuhrmanator,

@Fuhrmanator è ancora utile se il nome della cartella principale non è univoco, è sufficiente cercare in tutte le cartelle (il che può essere difficile se il numero di cartelle è grande, ma comunque).
ThomasW,

1

Cartella principale

Ho scritto un piccolo script che recupera la cartella principale, in base alla chiave 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;
}

Sembra così

inserisci qui la descrizione dell'immagine

Installare

  1. goto script.google.com , mentre si è connessi
  2. inizia una nuova sceneggiatura
  3. incolla il codice e premi l'icona del bug. Stampa autorizza.
  4. sotto file>menaged versionsalva lo script.
  5. vai Publish>Deploy as web appe premi aggiorna
  6. l'URL presentato (exec alla fine) ti consentirà di eseguire lo script autonomo.

Nota

Viene menzionata solo la cartella principale (esattamente quello che volevi) ma non rivelerà il percorso completo.


1

AGGIORNAMENTO: Google ha ritirato queste API quindi attenzione.

NOTA: questo non è più necessario utilizzando la nuova interfaccia utente dell'unità ...

  1. quando cerchi o hai un elenco di documenti, cita il file che trovi
  2. fai clic sul pulsante [i] (informazioni) in alto a destra
  3. fai clic su "Dettagli" (vs "Attività" predefinita)
  4. vedrai la condivisione e dove è memorizzato ecc

Mi sono reso conto che è già stata data una risposta, ma nel caso in cui le persone lo trovino durante la ricerca (l'ho fatto) ne aggiungerò un po '. Se non conosci Google App Script, consulta questo link .

Grazie a @Jacob Jan Tuinstra e @Drawn per i loro script, ma nessuno dei due era proprio quello di cui avevo bisogno, quindi ho usato entrambi per creare il mio. Lo script seguente deve essere incollato in un editor di script GApps, quindi pubblicato come app Web. Il collegamento deve essere salvato / aggiunto ai segnalibri per un successivo riutilizzo:

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

L'interfaccia utente è simile al seguente: UI dello script

Nota che l'ID di un file proviene dal suo URL, ovvero vedi "<...>" nell'esempio di URL di seguito:

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

Esattamente quello che mi serve; purtroppo Google ha deprecato UiApp l'11 dicembre 2014, quindi questo dovrà riscrivere ad un certo punto. Questo è il problema con i servizi cloud, nulla funziona a lungo, sei alla loro mercé.
Ed Randall,

Sì davvero @EdRandall. Lo aggiornerò nell'originale - thx
kgingeri il

1

Ecco un'implementazione più completa e affidabile dei due script in queste risposte (la prima e la seconda ) a questa domanda. Questo script consente di incollare l'URL completo del file o l'ID file nella prima casella di modifica nella finestra di dialogo, quindi restituisce una rappresentazione testuale del percorso e un collegamento alla directory principale. Le istruzioni di installazione sono identiche a quelle mostrate sopra da Jacob , le ho copiate di seguito per completezza.

NOTA: alcune delle API utilizzate in tutti questi script ora sono obsolete. Stanno ancora lavorando da quando è stato pubblicato questo post, ma probabilmente smetteranno di funzionare in 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;
}

Sembra così:

Trova l'interfaccia utente della cartella principale

Installare:

  1. goto script.google.com , mentre si è connessi
  2. inizia una nuova sceneggiatura
  3. incolla il codice e premi l'icona del bug. Stampa autorizza.
  4. in file> versione gestita salva lo script.
  5. vai a Pubblica> Distribuisci come app Web e premi aggiorna
  6. l'URL presentato (exec alla fine) ti consentirà di eseguire lo script autonomo.

1
Solo una nota: "sopra" non ha davvero alcun contesto nelle risposte, poiché le risposte possono essere ordinate in diversi modi. Meglio collegarsi alle risposte a cui ti stai riferendo.
Ale

Grazie Al, sono nuovo su StackExchange. Ho rimosso il riferimento "sopra" e utilizzato invece i collegamenti.
Greg L.

-2

Google ha già fornito una soluzione a questo:

Supponiamo che tu stia cercando un documento pdf chiamato myreport.pdf.

Cerchi myreport, ottieni un elenco di documenti che soddisfano i criteri.

Se vuoi conoscere la cartella in cui si trova, fai clic con il pulsante destro del mouse e fai clic su Trova in I miei file .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.