Câu trả lời:
Một tài liệu có khả năng có thể nằm trong nhiều thư mục, nhưng bạn có thể lấy danh sách chúng thông qua UI.
Nhấp vào biểu tượng thư mục bên cạnh tiêu đề tài liệu. Nếu tài liệu nằm trong một thư mục, bạn có thể xem vào thư mục đó hiển thị tên thư mục có biểu tượng để mở thư mục trong tab mới, các tài liệu khác trong thư mục và các tùy chọn để di chuyển tài liệu hiện tại:
Nếu tài liệu nằm trong nhiều thư mục, bạn sẽ nhận được một danh sách các thư mục chứa trong đó với các siêu liên kết.
Hãy cung cấp một phương tiện để đi đến thư mục mẹ của tài liệu với một cú nhấp chuột.
Đặt tập lệnh bên dưới trong trình chỉnh sửa tập lệnh 'giới hạn vùng chứa' của tài liệu của bạn. Thực hiện việc này bằng cách mở tài liệu của bạn và sau đó từ thanh menu tài liệu, chọn Công cụ> Trình chỉnh sửa tập lệnh ...
Nếu đây là lần đầu tiên bạn chỉnh sửa tập lệnh của tài liệu đó, mã mặc định sẽ điền vào màn hình của trình chỉnh sửa. Đơn giản chỉ cần thay thế nội dung tập lệnh bằng mã dưới đây. Bao gồm cả hàm onOpen () và listParentFolders () được liệt kê bên dưới.
Lưu tập lệnh trong trình chỉnh sửa và sau đó 'làm mới' cửa sổ duyệt hiển thị tài liệu được liên kết. Một mục menu mới sẽ xuất hiện cho tài liệu có tên Utils. Nhấp vào bảng Menu Utils sẽ hiển thị cửa sổ bật lên menu, Hiển thị đường dẫn. Kịch bản lệnh này sẽ hiển thị đường dẫn thư mục dưới dạng danh sách các siêu liên kết.
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
, hãy đặt source_folder = DriveApp.getFolderById(id)
và sử dụng source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)
hoặc ...MimeType.MICROSOFT_POWERPOINT_LEGACY
(hoặc bạn có thể sử dụng chuỗi loại mime thực tế mà phần sau ước tính). Xem tài liệu ở đây
Kể từ 2014-04-04, có một vài cách để lấy từ một tài liệu đến thư mục chứa nó.
Từ tài liệu mở, nhấp vào biểu tượng thư mục bên cạnh tiêu đề của tài liệu. Một hộp thoại xuất hiện với "Mục này nằm trong" và tên thư mục chứa. Tên thư mục được liên kết với thư mục. Nếu thay vào đó, hộp thoại "Chuyển đến" xuất hiện, thư mục chứa tài liệu là thư mục gốc. Nếu đó là tài liệu của bạn hoặc hoặc bạn đã thêm nó một cách rõ ràng, thì đó là trong My Drive. Nếu không, hãy thử Thêm> Tất cả các mục trong danh sách thư mục ở bên trái của chế độ xem danh sách tài liệu.
Từ giao diện tìm kiếm tài liệu, chọn mục. Thêm> Chi tiết và hoạt động> Chi tiết> Thư mục. Bất kỳ tên thư mục được liệt kê được liên kết với các thư mục tương ứng.
Kể từ 2014-12-03, tôi không còn có thể tìm ra cách chuyển từ chế độ xem tệp aa sang thư mục chứa tệp đó, đối với các tệp không phải là tài liệu Google hợp tác. Hãy bình luận hoặc chỉnh sửa câu trả lời này nếu bạn biết cách.
AFAIK không, không có cách nào để làm điều này từ URL tài liệu hoặc chính tài liệu. Bạn cần lấy tiêu đề của tài liệu và tìm kiếm nó trong chế độ xem danh sách Drive. Kết quả tìm kiếm sẽ hiển thị cho bạn tiêu đề tài liệu, sau đó cũng hiển thị tên của thư mục mẹ có màu xám.
Tôi đã viết một đoạn script nhỏ lấy thư mục mẹ, dựa trên khóa của tài liệu:
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
lưu tập lệnh.Publish>Deploy as web app
và nhấn cập nhậtChỉ thư mục mẹ được đề cập (chính xác những gì bạn muốn) nhưng nó sẽ không tiết lộ đường dẫn đầy đủ.
CẬP NHẬT: Google đã nghỉ hưu các API này vì vậy hãy cẩn thận.
LƯU Ý: điều này thực sự không còn cần thiết khi sử dụng UI ổ đĩa mới ...
Tôi nhận ra điều này đã được trả lời, nhưng chỉ trong trường hợp mọi người tìm thấy nó trong khi tìm kiếm (tôi đã làm) tôi sẽ thêm một số vào nó. Nếu bạn chưa quen với Google App Script, hãy xem liên kết này .
Cảm ơn @Jacob Jan Tuinstra và @Drawn cho các kịch bản của họ, nhưng đó không phải là thứ tôi cần, vì vậy tôi đã sử dụng cả hai thứ của họ để tạo ra cái của tôi. Tập lệnh bên dưới cần được dán vào trình chỉnh sửa tập lệnh GApps, sau đó được xuất bản dưới dạng ứng dụng web. Liên kết nên được lưu / đánh dấu để sử dụng lại sau:
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;
}
Giao diện người dùng trông như thế này:
Lưu ý rằng ID của tệp đến từ URL của nó - tức là xem "<...>" trong mẫu URL bên dưới:
https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
Dưới đây là một triển khai đầy đủ và đáng tin cậy hơn của hai tập lệnh trong các câu trả lời này (câu thứ nhất và câu thứ hai ) cho câu hỏi này. Tập lệnh này cho phép bạn dán URL đầy đủ của tệp hoặc ID tệp vào hộp chỉnh sửa đầu tiên trong hộp thoại và sau đó trả về biểu thị văn bản của đường dẫn cũng như liên kết đến thư mục mẹ. Các hướng dẫn cài đặt giống hệt với những gì được hiển thị ở trên bởi Jacob , tôi đã sao chép chúng bên dưới cho đầy đủ.
LƯU Ý: Một số API được sử dụng trong tất cả các tập lệnh này hiện đã lỗi thời. Họ vẫn đang làm việc khi bài đăng này được thực hiện, nhưng có lẽ sẽ ngừng hoạt động trong tương lai.
//
// 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;
}
Nó trông như thế này:
Để cài đặt:
Google đã cung cấp một giải pháp cho điều đó:
Giả sử bạn đang tìm kiếm một tài liệu pdf có tên myreport.pdf.
Bạn tìm kiếm myreport, bạn nhận được một danh sách các tài liệu đáp ứng các tiêu chí.
Nếu bạn muốn biết thư mục nằm trong đó, chỉ cần Nhấp chuột phải và Nhấp vào Định vị trong Ổ đĩa của tôi .