Comment afficher le dossier parent d'un document Google?

91

J'ai souvent un lien direct vers un document Google (le mien ou un document partagé par une organisation) et je souhaite trouver des documents stockés dans le même dossier. Pour ce faire, je devrais déterminer le dossier dans lequel se trouve le document.

Y-a-t-il un moyen de faire ça?

Claus
la source

Réponses:

72

Un document peut potentiellement se trouver dans plusieurs dossiers, mais vous pouvez en obtenir une liste via l'interface utilisateur.

Cliquez sur l'icône du dossier en regard du titre du document. Si le document se trouve dans un seul dossier, vous obtenez une vue dans ce dossier contenant le nom du dossier avec une icône pour ouvrir le dossier dans un nouvel onglet, les autres documents du dossier et les options pour déplacer le document actuel:

entrez la description de l'image ici

Si le document se trouve dans plusieurs dossiers, vous obtenez une liste des dossiers dans lesquels il se trouve, avec des hyperliens vers chacun.

Capture de deux dossiers parents

pkaeding
la source
16
Je me souviens que cette "icône de dossier" était là depuis un moment, mais elle est partie maintenant. Quelqu'un sait comment trouver le dossier parent dans le nouveau design?
Mike Eng
2
L'icône du dossier semble être de retour maintenant.
Vidar S. Ramdal
4
Le texte "Cet élément est dans:" a été déplacé dans la boîte de dialogue qui apparaît une fois que vous avez cliqué sur "l'icône de dossier". Malheureusement, cela ne semble pas fonctionner pour les fichiers que vous n'avez pas créés.
Jedidja
14
L'interface utilisateur de Google Drive est tellement désordonnée…
Franck Dernoncourt
3
@Jangari Oui, aussi absurde qu'il soit, vous obtenez des hyperliens si le document se trouve dans plusieurs dossiers, mais aucun hyperlien si le document ne se trouve que dans un seul dossier. Je vous encourage à envoyer ces commentaires à Google. Peut-être qu'ils vont changer si ils obtiennent assez de commentaires de la sorte. google.com/tools/feedback/intl/fr
Mike Eng
14

Manquer l'icône de dossier?

Si vous trouvez ce petit dossier manquant à la droite du nom du fichier, vous pouvez choisir File > Document details...de voir au moins le nom du répertoire parent. Par exemple:

Lorsque la petite icône de dossier est manquante ...

Et vous trouverez où diable Waldo est. Je me suis retrouvé dans le monde 2!

broc.seib
la source
5

Donnons un moyen d'aller au dossier parent du document avec un clic de souris.

Placez le script ci-dessous dans l'éditeur de script "lié au conteneur" de votre document. Pour ce faire, ouvrez votre document puis, dans la barre de menus du document, sélectionnez Outils> Editeur de script ...

Si c'est la première fois que vous modifiez le script de ce document, le code par défaut remplit l'écran de l'éditeur. Remplacez simplement le contenu du script par le code ci-dessous. Incluez les fonctions onOpen () et listParentFolders () répertoriées ci-dessous.

Enregistrez le script dans l'éditeur, puis "actualisez" la fenêtre de navigation affichant le document associé. Un nouvel élément de menu apparaît pour le document nommé Utils. Cliquez sur le pavé de menu Utils pour afficher la fenêtre de menu contextuelle, Afficher le chemin. Ce script affiche le chemin du répertoire sous forme de liste de liens hypertexte.

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);
}
Tiré
la source
Que se passe-t-il si mon document est un fichier PowerPoint (non Google Apps) sur Google Drive?
Fuhrmanator
@ Fuhrmanator y accéder avec l’API de DriveApp et non DocumentApp, chaque fichier a un type MIME (type de fichier) dans Drive sur lequel vous pouvez le trouver ainsi qu’un ID de fichier unique.
Louis Maddox
Spécifiquement, pour un dossier d'identifiant connu id, défini source_folder = DriveApp.getFolderById(id)et utilisé source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)ou ...MimeType.MICROSOFT_POWERPOINT_LEGACY(ou vous pouvez utiliser la chaîne de type mime réelle que cette dernière partie évalue). Voir la documentation ici
Louis Maddox
5

Depuis le 2014-04-04, il existe plusieurs façons de passer d'un document à son dossier contenant.

Dans le document ouvert, cliquez sur l'icône du dossier en regard du titre du document. Une boîte de dialogue apparaît avec "Cet élément est dans" et le nom du dossier contenant. Le nom du dossier est lié au dossier. Si une boîte de dialogue "Déplacer vers" apparaît à la place, le dossier contenant le document est la racine. Si c'est votre document ou que vous l'avez explicitement ajouté, c'est dans My Drive. Sinon, essayez Plus> Tous les éléments dans la liste des dossiers à gauche de la vue Liste des documents.

Dans la vue de recherche de document, sélectionnez l'élément. Plus> Détails et activité> Détails> Dossiers. Tous les noms de dossiers répertoriés sont liés aux dossiers correspondants.

Depuis le 03/12/2014, je ne sais plus comment passer d'une vue de fichier à son dossier contenant, pour les fichiers qui ne sont pas des documents Google collaboratifs. Veuillez commenter ou modifier cette réponse si vous savez comment.

Matt McClure
la source
2

Autant que je sache, il n'y a aucun moyen de le faire à partir de l'URL du document ou du document lui-même. Vous devez saisir le titre du document et le rechercher dans la vue Liste des lecteurs. Les résultats de la recherche doivent vous montrer le titre du document, puis également afficher le nom du dossier parent en gris.

OnenOnlyWalter
la source
Un aller-retour mais c'est une solution. Merci!
Noël
1
Utile uniquement si le nom de votre dossier parent est unique. Pas toujours le cas ...
Fuhrmanator
@ Fuhrmanator est toujours utile si le nom du dossier parent n'est pas unique, il vous suffit de rechercher dans tous les dossiers (ce qui peut être difficile si le nombre de dossiers est important, mais quand même).
ThomasW
1

Dossier parent

J'ai écrit un petit script qui récupère le dossier parent, basé sur la clé du document:

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

Ça ressemble à ça

entrez la description de l'image ici

À installer

  1. goto script.google.com , en étant connecté
  2. commencer un nouveau script
  3. collez le code et appuyez sur l'icône de bogue. Presse autoriser.
  4. sous file>menaged versionenregistrer le script.
  5. goto Publish>Deploy as web appet mise à jour de presse
  6. l'URL présentée (exec à la fin) vous permettra d'exécuter le script autonome.

Remarque

Seul le dossier parent est mentionné (exactement ce que vous vouliez) mais il ne divulguera pas le chemin complet.

Jacob Jan Tuinstra
la source
1

MISE À JOUR: Google a retiré ces API, alors méfiez-vous.

NOTE: cela n’est vraiment plus nécessaire avec la nouvelle interface utilisateur du lecteur ...

  1. lorsque vous effectuez une recherche ou avez une liste de documents, hi-lite le fichier que vous recherchez
  2. cliquez sur le bouton [i] (info) en haut à droite
  3. cliquez dans "Détails" (par défaut "Activité")
  4. vous verrez le partage et où il est stocké, etc.

J'ai réalisé que cela avait déjà été répondu, mais juste au cas où les gens le trouveraient en cherchant (je l'ai fait) je vais en ajouter. Si vous êtes nouveau sur Google App Script, consultez ce lien .

Merci à @Jacob Jan Tuinstra et à @Drawn pour leurs scripts, mais ni l'un ni l'autre ne correspondait vraiment à mes besoins, j'ai donc utilisé les deux pour créer le mien. Le script ci-dessous doit être collé dans un éditeur de script GApps, puis publié en tant qu'application Web. Le lien doit être enregistré / marqué pour une réutilisation ultérieure:

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'interface utilisateur ressemble à ceci: Interface utilisateur de script

Notez que l'ID d'un fichier provient de son URL - c'est-à-dire voir "<...>" dans l'exemple d'URL ci-dessous:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
Kgingeri
la source
Exactement ce dont j'ai besoin Malheureusement, UiApp a été déprécié par Google le 11 décembre 2014, il faudra donc le réécrire à un moment donné. C'est le problème des services en nuage, rien ne fonctionne longtemps, vous êtes à leur merci.
Ed Randall
Oui en effet @ EdRandall. Je vais mettre à jour cela dans l'original - thx
kgingeri
1

Voici une implémentation plus complète et fiable des deux scripts de ces réponses ( première et deuxième ) à cette question. Ce script vous permet de coller l'URL complète du fichier ou l'ID de fichier dans la première zone d'édition de la boîte de dialogue, puis renvoie une représentation textuelle du chemin ainsi qu'un lien vers le répertoire parent. Les instructions d’installation sont identiques à celles présentées ci-dessus par Jacob . Je les ai copiées ci-dessous pour les compléter.

REMARQUE: Certaines des API utilisées dans tous ces scripts sont maintenant obsolètes. Ils travaillent toujours au moment où ce poste a été créé, mais cesseront probablement de fonctionner à l'avenir.

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

Cela ressemble à ceci:

Rechercher l'interface utilisateur du dossier parent

À installer:

  1. goto script.google.com , en étant connecté
  2. commencer un nouveau script
  3. collez le code et appuyez sur l'icône de bogue. Presse autoriser.
  4. sous fichier> version gérée, sauvegardez le script.
  5. goto Publier> Déployer en tant qu'application Web et cliquer sur Mettre à jour
  6. l'URL présentée (exec à la fin) vous permettra d'exécuter le script autonome.
Greg L.
la source
1
Juste une remarque: "ci-dessus" n'a pas vraiment de contexte dans les réponses, car les réponses peuvent être triées de différentes manières. Mieux vaut faire un lien vers les réponses auxquelles vous faites référence.
ale
Merci Al, je suis nouveau sur StackExchange. J'ai supprimé la référence "ci-dessus" et utilisé des liens à la place.
Greg L.
-2

Google a déjà fourni une solution à cela:

Supposons que vous recherchiez un document pdf appelé myreport.pdf.

Vous recherchez myreport, vous obtenez une liste de documents répondant aux critères.

Si vous voulez connaître le dossier dans lequel il se trouve, il suffit de cliquer à droite et de cliquer sur Localiser dans mon lecteur .

Rajiv Jowaheer
la source