Risposte:
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:
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.
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);
}
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
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.
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.
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;
}
file>menaged version
salva lo script.Publish>Deploy as web app
e premi aggiornaViene menzionata solo la cartella principale (esattamente quello che volevi) ma non rivelerà il percorso completo.
AGGIORNAMENTO: Google ha ritirato queste API quindi attenzione.
NOTA: questo non è più necessario utilizzando la nuova interfaccia utente dell'unità ...
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:
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
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ì:
Installare:
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 .