답변:
문서는 여러 폴더에있을 수 있지만 UI를 통해 문서 목록을 얻을 수 있습니다.
문서 제목 옆의 폴더 아이콘을 클릭하십시오. 문서가 단일 폴더에있는 경우 새 탭에서 폴더를 열 수있는 아이콘이있는 폴더 이름, 폴더의 다른 문서 및 현재 문서를 이동하는 옵션이있는 단일 폴더를 볼 수 있습니다.
문서가 둘 이상의 폴더에있는 경우 각 폴더에 대한 하이퍼 링크가있는 폴더 목록이 표시됩니다.
마우스 클릭만으로 문서의 상위 폴더로 이동할 수있는 방법을 제공합니다.
아래의 스크립트를 문서의 '컨테이너 바운드'스크립트 편집기에 배치하십시오. 문서를 연 다음 문서 메뉴 표시 줄에서 도구> 스크립트 편집기 ...를 선택하십시오.
해당 문서의 스크립트를 처음 편집하는 경우 기본 코드가 편집기 화면을 채 웁니다. 스크립트 내용을 아래 코드로 바꾸십시오. 아래에 나열된 onOpen () 및 listParentFolders () 함수를 모두 포함하십시오.
스크립트를 편집기에 저장 한 다음 관련 문서를 표시하는 찾아보기 창을 '새로 고침'하십시오. Utils라는 문서에 대한 새로운 메뉴 항목이 나타납니다. 유틸리티 메뉴 패드를 클릭하면 메뉴 팝업, 경로 표시가 표시됩니다. 이 스크립트는 디렉토리 경로를 하이퍼 링크 목록으로 표시합니다.
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)
및 use 폴더의 경우 source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)
또는 ...MimeType.MICROSOFT_POWERPOINT_LEGACY
후자 부분이 평가하는 실제 mime 유형 문자열을 사용할 수 있습니다. 여기에서 문서
2014-04-04 현재 문서에서 포함 폴더로 가져 오는 방법에는 두 가지가 있습니다.
열린 문서에서 문서 제목 옆의 폴더 아이콘을 클릭하십시오. "이 항목이 있습니다"및 폴더 이름이 포함 된 대화 상자가 나타납니다. 폴더 이름이 폴더에 연결되어 있습니다. 대신 "이동"대화 상자가 나타나면 문서의 포함 폴더가 루트입니다. 문서이거나 명시 적으로 추가 한 경우 내 드라이브에 있습니다. 그렇지 않은 경우 문서 목록보기의 왼쪽에있는 폴더 목록에서 추가> 모든 항목을 시도하십시오.
문서 검색보기에서 항목을 선택하십시오. 추가> 세부 사항 및 활동> 세부 사항> 폴더. 나열된 폴더 이름은 해당 폴더에 연결됩니다.
2014-12-03 현재 공동 작업 Google 문서가 아닌 파일의 경우 파일보기에서 포함 폴더로가는 방법을 더 이상 알 수 없습니다. 방법을 아는 경우이 답변에 댓글을 달거나 수정하십시오.
AFAIK 아니요, 문서 URL 또는 문서 자체에서이를 수행 할 수있는 방법이 없습니다. 문서 제목을 잡고 드라이브 목록보기에서 검색해야합니다. 검색 결과에 문서 제목이 표시되고 부모 폴더의 이름도 회색으로 표시됩니다.
문서의 키를 기반으로 부모 폴더를 검색하는 작은 스크립트를 작성했습니다.
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
스크립트를 저장합니다.Publish>Deploy as web app
업데이트를 누릅니다상위 폴더 만 언급되었지만 (정확하게 원하는 것) 전체 경로는 공개되지 않습니다.
업데이트 : Google 은이 API를 폐기 했으므로 조심하십시오.
참고 : 새로운 드라이브 UI를 사용하면 더 이상 필요하지 않습니다.
나는 이것이 이미 답변되었다는 것을 깨달았지만 사람들이 검색하는 동안 그것을 찾은 경우에 대비하여 내가 그것에 추가 할 것입니다. Google App Script를 처음 사용하는 경우이 링크를 참조하십시오 .
@Jacob Jan Tuinstra와 @Drawn 덕분에 스크립트가 필요했지만 어느 것도 필요한 것이 아니기 때문에 두 가지를 모두 사용하여 광산을 만들었습니다. 아래 스크립트는 GApps 스크립트 편집기에 붙여 넣은 다음 웹앱으로 게시해야합니다. 나중에 재사용 할 수 있도록 링크를 저장 / 북마크해야합니다.
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는 다음과 같습니다.
파일의 ID는 해당 URL에서 가져옵니다. 즉, 아래 URL 샘플에서 "<...>"를 참조하십시오.
https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
이 질문에 대한 답변 ( 첫 번째 및 두 번째 ) 에서 두 스크립트를보다 완벽하고 안정적으로 구현합니다 . 이 스크립트를 사용하면 파일의 전체 URL 또는 파일 ID를 대화 상자의 첫 번째 편집 상자에 붙여 넣은 다음 경로의 텍스트 표현과 상위 디렉토리에 대한 링크를 반환 할 수 있습니다. 설치 지침은 Jacob 에 의해 위에 표시된 것과 동일하며 , 완전성을 위해 아래에 복사했습니다.
참고 :이 모든 스크립트에 사용 된 일부 API는 이제 사용되지 않습니다. 그들은이 게시물이 작성된 시점에서 여전히 작동하지만 앞으로는 작동을 멈출 것입니다.
//
// 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;
}
다음과 같이 보입니다 :
설치하기 위해서: