Jawaban:
Dokumen berpotensi berada dalam beberapa folder, tetapi Anda bisa mendapatkan daftar melalui UI.
Klik ikon folder di sebelah judul dokumen. Jika dokumen berada dalam satu folder, Anda mendapatkan tampilan ke folder tunggal yang menunjukkan nama folder dengan ikon untuk membuka folder di tab baru, dokumen lain di folder, dan opsi untuk memindahkan dokumen saat ini:
Jika dokumen ada di lebih dari satu folder, Anda mendapatkan daftar folder yang ada di dalamnya dengan hyperlink masing-masing.
Mari kita berikan sarana untuk pergi ke folder induk dokumen dengan mengklik mouse.
Tempatkan skrip di bawah ini di editor skrip 'terikat wadah' dokumen Anda. Lakukan ini dengan membuka dokumen Anda dan kemudian dari bilah menu dokumen, pilih Alat> Editor skrip ...
Jika ini adalah pertama kalinya Anda mengedit skrip dokumen itu, kode default akan mengisi layar editor. Cukup ganti konten skrip dengan kode di bawah ini. Sertakan fungsi onOpen () dan listParentFolders () yang tercantum di bawah ini.
Simpan skrip di editor dan kemudian 'segarkan' jendela jelajah yang menampilkan dokumen terkait. Item menu baru akan muncul untuk dokumen bernama Utils. Mengklik pada pad Menu Utils akan menampilkan menu popup, Show Path. Script ini akan menampilkan jalur direktori sebagai daftar hyperlink.
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
, set source_folder = DriveApp.getFolderById(id)
, dan gunakan source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)
atau ...MimeType.MICROSOFT_POWERPOINT_LEGACY
(atau Anda dapat menggunakan string tipe mime aktual yang dievaluasi oleh bagian terakhir). Lihat dokumen di sini
Pada 2014-04-04, ada beberapa cara untuk mendapatkan dari dokumen ke folder yang berisi.
Dari dokumen terbuka, klik ikon folder di sebelah judul dokumen. Dialog muncul dengan "Item ini ada di" dan nama folder yang berisi. Nama folder ditautkan ke folder. Jika dialog "Pindah ke" muncul sebagai gantinya, folder yang berisi dokumen adalah root. Jika dokumen Anda atau Anda menambahkannya secara eksplisit, itu ada di Drive Saya. Jika tidak, coba Selengkapnya> Semua Item dalam daftar folder di sebelah kiri tampilan daftar dokumen.
Dari tampilan pencarian dokumen, pilih item. Selengkapnya> Detail dan aktivitas> Detail> Folder. Setiap nama folder yang tercantum ditautkan ke folder yang sesuai.
Mulai 2014-12-03, saya tidak bisa lagi mencari tahu cara mendapatkan dari tampilan file ke folder yang berisi, untuk file yang bukan merupakan dokumen Google kolaboratif. Berikan komentar atau edit jawaban ini jika Anda tahu caranya.
AFAIK tidak, tidak ada cara untuk melakukan ini dari URL dokumen atau dokumen itu sendiri. Anda harus mengambil judul dokumen dan mencarinya di tampilan daftar Drive Anda. Hasil pencarian akan menunjukkan kepada Anda judul dokumen, kemudian juga menunjukkan nama folder induk dalam warna abu-abu.
Saya menulis sebuah skrip kecil yang mengambil folder induk, berdasarkan kunci dokumen:
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
simpan skrip.Publish>Deploy as web app
dan tekan pembaruanHanya folder induk yang disebutkan (persis apa yang Anda inginkan) tetapi tidak akan mengungkapkan path lengkap.
UPDATE: Google telah menghentikan API ini jadi waspadalah.
CATATAN: ini benar-benar tidak lagi diperlukan menggunakan drive UI baru ...
Saya menyadari ini sudah dijawab, tetapi kalau-kalau orang menemukannya saat mencari (saya lakukan) saya akan menambahkan beberapa ke dalamnya. Jika Anda baru menggunakan Google App Script, lihat tautan ini .
Terima kasih kepada @Jacob Jan Tuinstra dan @Drawn untuk skrip mereka, tetapi tidak cukup yang saya butuhkan, jadi saya menggunakan keduanya untuk membuat milik saya. Skrip di bawah ini harus disisipkan ke dalam editor skrip GApps, kemudian dipublikasikan sebagai aplikasi web. Tautan harus disimpan / ditandai untuk digunakan kembali nanti:
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;
}
UI terlihat seperti ini:
Perhatikan bahwa ID file berasal dari URL-nya - yaitu lihat "<...>" dalam contoh URL di bawah ini:
https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
Berikut ini adalah implementasi kedua skrip yang lebih lengkap dan andal dalam jawaban ini ( pertama dan kedua ) untuk pertanyaan ini. Script ini memungkinkan Anda untuk menempel URL lengkap file atau ID file ke dalam kotak edit pertama dalam dialog dan kemudian mengembalikan representasi teks dari path serta tautan ke direktori induk. Instruksi instalasi identik dengan apa yang ditunjukkan di atas oleh Jacob , saya menyalinnya di bawah ini untuk kelengkapan.
CATATAN: Beberapa API yang digunakan dalam semua skrip ini sekarang sudah usang. Mereka masih bekerja pada saat posting ini dibuat, tetapi mungkin akan berhenti bekerja di masa depan.
//
// 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;
}
Ini terlihat seperti ini:
Untuk memasang:
Google telah memberikan solusi untuk itu:
Misalkan Anda mencari dokumen pdf bernama myreport.pdf.
Anda mencari laporan saya, Anda mendapatkan daftar dokumen yang memenuhi kriteria.
Jika Anda ingin mengetahui folder tempatnya, cukup Klik Kanan dan Klik Temukan di Drive Saya .