Як переглянути батьківську папку документа Google?


91

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

Чи є спосіб це зробити?

Відповіді:


72

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

Клацніть піктограму папки поруч із заголовком документа. Якщо документ знаходиться в одній папці, ви отримуєте перегляд цієї єдиної папки із зазначенням імені папки з піктограмою, щоб відкрити папку на новій вкладці, інші документи в папці та параметри переміщення поточного документа:

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

Якщо документ знаходиться у більш ніж одній папці, ви отримуєте список папок, у яких він знаходиться, із гіперпосиланнями на кожну.

Знімок екрана двох батьківських папок


16
Я пам’ятаю, що ця «піктограма папки» була деякий час назад, але її вже немає. Хтось знає, як знайти батьківську папку в новому дизайні?
Майк Енг

2
Здається, значок папки зараз повернувся.
Відар С. Рамдал

4
Текст "Цей елемент знаходиться в:" текст тепер перемістився до діалогового вікна, яке з'явиться після натискання на значок "папки". На жаль, це, здається, не працює для файлів, які ви не створили.
Джедіджа

14
Користувацький інтерфейс Google Drive такий безлад…
Franck Dernoncourt

3
@Jangari Так, настільки ж безглуздим, ви отримуєте гіперпосилання, якщо документ є в декількох папках, але немає гіперпосилання, якщо документ знаходиться лише в одній папці. Я б радив надіслати відгук про цей продукт Google. Можливо, вони це змінять, якщо отримають достатню кількість відгуків. google.com/tools/feedback/intl/uk
Майк Енг

14

Відсутня значок папки?

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

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

І ти знайдеш, де чорт Вальдо. Я опинився у світі-2!


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

Що робити, якщо мій документ - це файл PowerPoint (не для додатків Google) на диску Google?
Фурманатор

@Fuhrmanator отримує доступ до нього за допомогою API DriveApp, а не DocumentApp, кожен файл має міметик (тип файлу) на Диску, на якому ви можете знайти його, а також унікальний ідентифікатор файлу.
Луї Маддокс

Зокрема, для папки з відомим id id, set source_folder = DriveApp.getFolderById(id), and use source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)або ...MimeType.MICROSOFT_POWERPOINT_LEGACY(або ви можете використовувати фактичну строку типу mime, яку оцінює остання частина). Дивіться тут документи
Луї Маддокс

5

Станом на 2014-04-04, існує декілька способів дістатися з документа в папку, що містить його.

У відкритому документі натисніть значок папки поруч із заголовком документа. З'явиться діалогове вікно із написом "Цей елемент знаходиться в" та ім'я папки, що містить. Назва папки пов'язана з папкою. Якщо натомість з'явиться діалогове вікно "Перемістити до", папка, що містить документ, є коренем. Якщо це ваш документ або ви явно додали його, він знаходиться на "Моєму диску". Якщо ні, спробуйте Додатково> Усі елементи зі списку папок зліва від подання списку документів.

У вікні пошуку документа виберіть елемент. Детальніше> Деталі та активність> Деталі> Папки. Будь-які перелічені назви папок пов'язані з відповідними папками.

З 2014-12-03 я більше не можу зрозуміти, як дістатися з перегляду файлів aa до папки, що містить його, для файлів, які не є спільними документами Google. Будь ласка, прокоментуйте або відредагуйте цю відповідь, якщо знаєте як.


2

AFAIK ні, немає ніякого способу зробити це з URL-адреси документа чи самого документа. Вам потрібно буде схопити назву документа та знайти її у вікні списку Диска. Результати пошуку повинні вказувати заголовок документа, а також ім'я батьківської папки сірим кольором.


Круглий шлях, але це рішення. Дякую!
Клаус

1
Корисний лише, якщо ім'я батьківської папки унікальне. Не завжди так ...
Фурманатор

@Fuhrmanator це все-таки корисно, якщо назва батьківської папки не є унікальним, вам потрібно просто пошукати всі папки (що може бути складно, якщо кількість папок велика, але все ж).
ThomasW

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. перейдіть Publish>Deploy as web appта натисніть оновлення
  6. представлений URL (exec в кінці) дозволить запустити сценарій stand-a-lone.

Примітка

Згадується лише батьківська папка (саме те, що ви хотіли), але вона не розкриє повний шлях.


1

ОНОВЛЕННЯ: Google відмовився від цих API, тому будьте обережні.

ПРИМІТКА. Це дійсно більше не потрібно за допомогою нового інтерфейсу накопичувача ...

  1. коли ви шукаєте або маєте будь-який список документів, привіт літерату, який ви знайдете
  2. натисніть кнопку [i] (інформація) у верхньому правому куті
  3. натисніть "Деталі" (порівняно з типовою "Діяльність")
  4. ви побачите спільний доступ і де він зберігається тощо

Я зрозумів, що на це вже відповіли, але на всякий випадок, коли люди знайдуть його під час пошуку (я це зробив), я додам його до нього. Якщо ви новачок у програмі Google Script 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;
}

Інтерфейс користувача виглядає приблизно так: Інтерфейс сценарію

Зауважте, що ідентифікатор файлу походить із його URL-адреси - тобто див. <<>> У прикладі URL-адреси нижче:

https://docs.google.com/a/your_domain/spreadsheet/ccc?key=<...>&usp=drive_web#gid=0

Саме те, що мені потрібно; на жаль Google 11 грудня застарів UiApp, тому для певного моменту це потрібно буде переписати. Ось біда з хмарними послугами, нічого не працює довго, ти їм на милість.
Ед Рандалл

Так дійсно @EdRandall. Я
оновлю

1

Ось більш повна та достовірна реалізація двох сценаріїв у цих відповідях ( перший та другий ) на це питання. Цей скрипт дозволяє вставити повну URL-адресу файлу або ідентифікатор файла в перше поле редагування діалогового вікна, а потім повертає текстове подання шляху, а також посилання на батьківський каталог. Інструкція по установці ідентична тому, що показано вище Яковом , я скопіював їх нижче для повноти.

ПРИМІТКА. Деякі 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;
}

Це виглядає приблизно так:

Знайдіть інтерфейс батьківської папки

Щоб встановити:

  1. goto script.google.com під час входу
  2. запустити новий сценарій
  3. вставте код і натисніть значок помилки. Натисніть авторизувати.
  4. у файлі> керована версія збережіть сценарій.
  5. goto Опублікувати> Розгорнути як веб-додаток та натиснути оновлення
  6. представлений URL (exec в кінці) дозволить запустити сценарій stand-a-lone.

1
Лише зауваження: "вище" насправді не має контексту у відповідях, оскільки відповіді можна сортувати по-різному. Краще посилання на відповіді, на які ви посилаєтесь.
але

Дякую Ал, я новачок у StackExchange. Я видалив посилання "вище" та використав посилання натомість.
Грег Л.

-2

Google уже запропонував рішення для цього:

Припустимо, ви шукаєте документ PDF, який називається myreport.pdf.

Ви шукаєте мій звіт, ви отримуєте перелік документів, які відповідають критеріям.

Якщо ви хочете дізнатися про папку, в якій вона знаходиться, просто клацніть правою кнопкою миші та натисніть кнопку Розташувати на "Мій диск" .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.