Как просмотреть родительскую папку Документа Google?

Часто у меня есть прямая ссылка на Документ Google (мой или совместно используемый совместно) и вы хотите найти документы, которые хранятся в одной папке. Для этого мне нужно будет определить папку, в которой находится документ.

Есть ли способ сделать это?

76 голосов | спросил Claus 6 Maypm13 2013, 18:15:54

9 ответов


59

Документ потенциально может быть в нескольких папках, но вы можете получить их список через интерфейс.

Щелкните значок папки рядом с названием документа. Если документ находится в одной папке, вы получаете представление в эту единственную папку с указанием имени папки со значком, чтобы открыть папку на новой вкладке, другие документы в папке и параметры для перемещения текущего документа:

 введите описание изображения здесь>> </a> </p>

<p> Если документ находится в нескольких папках, вы получаете список папок, в которых он находится, с гиперссылками к каждому. </p>

<p> <a href= Снимок экрана из двух родительских папок

ответил pkaeding 8 Mayam13 2013, 03:14:21
10

Отсутствует значок папки

Если вы обнаружите, что небольшая папка отсутствует справа от имени файла, вы можете выбрать File > Document details..., чтобы хотя бы увидеть имя родительского каталога. Например:.

 Когда значок маленькой папки отсутствует ...

И ты найдешь, где, черт возьми, Уолдо. «Я

ответил broc.seib 3 SatEurope/Moscow2016-12-03T19:45:02+03:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2016 19:45:02 +0300 2016, 19:45:02
5

Предоставим средство для перехода к родительской папке документа одним щелчком мыши.

Поместите сценарий ниже в редактор сценария вашего контейнера. Сделайте это, открыв документ, а затем в строке меню документа выберите Инструменты> Редактор скриптов ...

Если вы впервые редактируете скрипт этого документа, код по умолчанию заполняет экран редактора. Просто замените содержимое скрипта на код ниже. Включите обе функции onOpen () и listParentFolders (), перечисленные ниже.

Сохраните сценарий в редакторе и затем «обновите» окно обзора, отображающее соответствующий документ. Появится новый пункт меню для документа с именем Utils. Нажав на панель меню 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);
}
ответил Drawn 25 +04002013-10-25T04:53:00+04:00312013bEurope/MoscowFri, 25 Oct 2013 04:53:00 +0400 2013, 04:53:00
5

Начиная с 2014-04-04 существует несколько способов получить от документа папку, содержащую ее.

В открывшемся документе щелкните значок папки рядом с названием документа. Появится диалоговое окно с надписью «Этот элемент находится» и имя содержащейся папки. Имя папки связано с папкой. Если вместо этого появляется диалоговое окно «Переместить в», папка, содержащая документ, является корнем. Если это ваш документ или вы явно добавили его, он находится на моем диске. Если нет, попробуйте Больше> Все элементы в списке папок слева от представления списка документов.

В окне поиска документа выберите элемент. Больше> Детали и активность> Детали> Папки. Все перечисленные имена папок связаны с соответствующими папками.

Начиная с 2014-12-03, я больше не могу понять, как перейти из представления файла в его содержащую папку, для файлов, которые не являются совместными документами Google. Прокомментируйте или отредактируйте этот ответ, если вы знаете, как это сделать.

ответил Matt McClure 4 PMpFri, 04 Apr 2014 18:14:37 +040014Friday 2014, 18:14:37
2

AFAIK no, нет способа сделать это из URL документа или самого документа. Вам нужно будет захватить название документа и найти его в своем списке «Список дисков». В результатах поиска должно отображаться название документа, а затем указывать имя родительской папки в сером цвете.

ответил OnenOnlyWalter 6 Maypm13 2013, 20:07:21
1

Родительская папка

Я написал небольшой скрипт, который извлекает родительскую папку на основе ключа документа:

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

Похоже на это

введите описание изображения здесь

Для установки

  1. goto script.google.com , во время входа в систему
  2. запустить новый скрипт
  3. вставить код и нажать значок ошибки. Нажмите авторизацию.
  4. в file>menaged version сохранить сценарий.
  5. goto Publish>Deploy as web app и нажать кнопку обновления
  6. представленный URL (exec в конце) позволит вам запустить сценарий stand-a-lone.

Примечание

Указывается только родительская папка (именно то, что вы хотели), но она не будет раскрывать полный путь.

ответил Jacob Jan Tuinstra 8 Mayam13 2013, 01:13:20
1

ОБНОВЛЕНИЕ: Google уволил эти API, так что будьте осторожны.

ПРИМЕЧАНИЕ: это действительно больше не нужно с помощью нового интерфейса UI ...

  1. при поиске или наличии списка документов, hi-lite файл, который вы найдете
  2. нажмите кнопку [i] (информация) в правом верхнем углу.
  3. нажмите «Подробности» (vs default «Активность»)
  4. вы увидите общий доступ и где он хранится и т. д.

Я понял, что это уже ответили, но на всякий случай люди найдут его во время поиска (я сделал), я добавлю некоторые из них. Если вы новичок в 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;
}

Пользовательский интерфейс выглядит следующим образом: Script UI

Обратите внимание, что идентификатор файла поступает из его URL-адреса - например, «<...>» в примере URL ниже:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0
ответил kgingeri 8 MaramSat, 08 Mar 2014 00:34:10 +04002014-03-08T00:34:10+04:0012 2014, 00:34:10
1

Ниже приведена более полная и надежная реализация двух сценариев в этих ответах ( первый вариант и второй ) на этот вопрос. Этот скрипт позволяет вставить полный URL-адрес файла или идентификатора файла в первое поле редактирования в диалоговом окне, а затем возвращает текстовое представление пути, а также ссылку на родительский каталог. Инструкции по установке идентичны тому, что показано выше, 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;
}

Он выглядит так:

Найти родительский папок UI

Чтобы установить:

  1. goto script.google.com , во время входа в систему
  2. запустить новый скрипт
  3. вставить код и нажать значок ошибки. Нажмите авторизацию.
  4. под файлом> измененная версия сохраняет сценарий.
  5. перейти Опубликовать & Развернуть как веб-приложение и нажать обновление
  6. представленный URL (exec в конце) позволит вам запустить сценарий stand-a-lone.
ответил Greg L. 9 J0000006Europe/Moscow 2015, 05:53:44
-2

Google уже предоставил решение для этого:

Предположим, вы ищете PDF-документ под названием myreport.pdf.

Вы ищете для myreport, вы получаете список документов, которые удовлетворяют критериям.

Если вы хотите узнать папку, в которой она находится, щелкните правой кнопкой мыши и выберите Найти на моем диске .

ответил Rajiv Jowaheer 23 PMpThu, 23 Apr 2015 16:49:49 +030049Thursday 2015, 16:49:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132