วิธีดูโฟลเดอร์พาเรนต์ของเอกสาร Google


91

บ่อยครั้งที่ฉันมีลิงก์โดยตรงไปยัง Google Document (ของฉันหรือขององค์กรที่แชร์) และต้องการค้นหาเอกสารที่เก็บไว้ในโฟลเดอร์เดียวกัน หากต้องการทำเช่นนั้นฉันจะต้องกำหนดโฟลเดอร์ที่เอกสารนั้นมีอยู่

มีวิธีทำเช่นนั้นหรือไม่?

คำตอบ:


72

เอกสารอาจอยู่ในหลาย ๆ โฟลเดอร์ แต่คุณสามารถรับรายการได้จาก UI

คลิกที่ไอคอนโฟลเดอร์ถัดจากชื่อเอกสาร หากเอกสารอยู่ในโฟลเดอร์เดียวคุณจะได้รับมุมมองในโฟลเดอร์เดียวนั้นซึ่งแสดงชื่อโฟลเดอร์พร้อมไอคอนเพื่อเปิดโฟลเดอร์ในแท็บใหม่เอกสารอื่น ๆ ในโฟลเดอร์และตัวเลือกเพื่อย้ายเอกสารปัจจุบัน:

ป้อนคำอธิบายรูปภาพที่นี่

หากเอกสารอยู่ในโฟลเดอร์มากกว่าหนึ่งโฟลเดอร์คุณจะได้รับรายการโฟลเดอร์ที่มีไฮเปอร์ลิงก์ไปยังแต่ละโฟลเดอร์

สกรีนช็อตของสองพาเรนต์โฟลเดอร์


16
ฉันจำได้ว่า "ไอคอนโฟลเดอร์" อยู่ที่นั่นครู่หนึ่ง แต่ตอนนี้มันหายไปแล้ว ใครรู้วิธีค้นหาโฟลเดอร์หลักในการออกแบบใหม่
Mike Eng

2
ไอคอนโฟลเดอร์ดูเหมือนจะกลับมาตอนนี้
Vidar S. Ramdal

4
ข้อความ "รายการนี้อยู่ใน:" ตอนนี้ย้ายไปยังกล่องโต้ตอบที่ปรากฏขึ้นหลังจากที่คุณคลิกที่ "ไอคอนโฟลเดอร์" โชคไม่ดีที่สิ่งนี้ไม่สามารถใช้งานได้กับไฟล์ที่คุณยังไม่ได้สร้าง
Jedidja

14
UI ของ Google Drive นั้นยุ่งเหยิง ...
Franck Dernoncourt

3
@Jangari ใช่มันไร้สาระอย่างที่เป็นอยู่คุณจะได้รับการเชื่อมโยงหลายมิติถ้าเอกสารอยู่ในหลาย ๆ โฟลเดอร์ แต่ไม่มีไฮเปอร์ลิงก์ถ้าเอกสารนั้นอยู่ในโฟลเดอร์เดียวเท่านั้น ฉันขอแนะนำให้คุณส่งข้อเสนอแนะผลิตภัณฑ์นี้ไปยัง Google บางทีพวกเขาจะเปลี่ยนมันถ้าพวกเขาได้รับข้อเสนอแนะที่เพียงพอของการจัดเรียง google.com/tools/feedback/intl/th
Mike Eng

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

@Fuhrmanator เข้าถึงโดยใช้ DriveApp API ไม่ใช่ DocumentApp แต่ละไฟล์มี mimetype (ประเภทไฟล์) ใน Drive คุณสามารถค้นหาได้เช่นเดียวกับ ID ไฟล์ที่ไม่ซ้ำกัน
Louis Maddox

โดยเฉพาะสำหรับโฟลเดอร์ของ id ที่รู้จักidตั้งค่าsource_folder = DriveApp.getFolderById(id)และใช้source_folder.getFilesByType(MimeType.MICROSOFT_POWERPOINT)หรือ...MimeType.MICROSOFT_POWERPOINT_LEGACY(หรือคุณสามารถใช้สตริงชนิด mime จริงส่วนหลังประเมินเป็น) ดูเอกสารได้ที่นี่
Louis Maddox

5

ตั้งแต่วันที่ 2014-04-04 มีสองวิธีในการรับจากเอกสารไปยังโฟลเดอร์ที่มี

จากเอกสารที่เปิดอยู่ให้คลิกไอคอนโฟลเดอร์ถัดจากชื่อของเอกสาร กล่องโต้ตอบปรากฏขึ้นพร้อมกับ "รายการนี้อยู่ใน" และชื่อโฟลเดอร์ที่มี ชื่อโฟลเดอร์ถูกเชื่อมโยงไปยังโฟลเดอร์หากกล่องโต้ตอบ "ย้ายไปที่" ปรากฏขึ้นแทนโฟลเดอร์ที่มีเอกสารนั้นเป็นรูท หากเป็นเอกสารของคุณหรือคุณได้เพิ่มเอกสารไว้ใน My Drive ถ้าไม่ลองเพิ่มเติม> รายการทั้งหมดในรายการโฟลเดอร์ทางด้านซ้ายของมุมมองรายการเอกสาร

จากมุมมองค้นหาเอกสารให้เลือกรายการ เพิ่มเติม> รายละเอียดและกิจกรรม> รายละเอียด> โฟลเดอร์ ชื่อโฟลเดอร์ใด ๆ ที่ระบุไว้จะถูกลิงค์ไปยังโฟลเดอร์ที่เกี่ยวข้อง

ตั้งแต่วันที่ 2014-12-03, ฉันไม่สามารถหาวิธีการรับมุมมองไฟล์ aa ไปยังโฟลเดอร์ที่เก็บไฟล์นั้นได้อีกต่อไปสำหรับไฟล์ที่ไม่ใช่เอกสาร Google ที่ทำงานร่วมกัน โปรดแสดงความคิดเห็นหรือแก้ไขคำตอบนี้หากคุณรู้วิธี


2

AFAIK ไม่ไม่มีวิธีการทำเช่นนี้จาก URL เอกสารหรือเอกสารเอง คุณจะต้องคว้าชื่อเอกสารและค้นหาในมุมมองรายการไดรฟ์ของคุณ ผลลัพธ์การค้นหาควรแสดงชื่อเอกสารจากนั้นแสดงชื่อโฟลเดอร์หลักเป็นสีเทา


รอบเกี่ยวกับวิธี แต่มันเป็นทางออก ขอบคุณ!
ซานตาคลอส

1
มีประโยชน์เฉพาะในกรณีที่ชื่อโฟลเดอร์หลักของคุณไม่ซ้ำกัน ไม่ใช่ทุกกรณี ...
Fuhrmanator

@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 ตอนท้าย) จะช่วยให้คุณเรียกใช้สคริปต์แบบสแตนด์อะโลน

บันทึก

เฉพาะโฟลเดอร์หลักเท่านั้นที่ถูกกล่าวถึง (สิ่งที่คุณต้องการ) แต่จะไม่เปิดเผยเส้นทางแบบเต็ม


1

อัปเดต: Google ได้ยกเลิก API ดังนั้นโปรดระวัง

หมายเหตุ: ไม่จำเป็นต้องใช้ UI ไดรฟ์ใหม่อีกต่อไป

  1. เมื่อคุณค้นหาหรือมีรายการเอกสารใด ๆ ให้ไฮไลต์ไฟล์ที่คุณต้องการค้นหา
  2. คลิกปุ่ม [i] (ข้อมูล) ที่ด้านบนขวา
  3. คลิกที่ "รายละเอียด" (vs "กิจกรรม" เริ่มต้น)
  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;
}

UI มีลักษณะดังนี้: สคริปต์ UI

โปรดทราบว่า ID ของไฟล์มาจาก URL ของมัน - เช่นดู "<... >" ในตัวอย่าง URL ด้านล่าง:

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

สิ่งที่ฉันต้องการ น่าเศร้าที่ Google เลิกใช้ UiApp ในวันที่ 11 ธันวาคม 2014 ดังนั้นจะต้องมีการเขียนใหม่ในบางจุด นั่นเป็นปัญหากับบริการคลาวด์ไม่มีอะไรทำงานได้นานคุณอยู่ในความเมตตาของพวกเขา
Ed Randall

ใช่แน่นอน @EdRandall ฉันจะอัปเดตสิ่งนี้ในแบบดั้งเดิม - ขอบคุณ
kgingeri

1

นี่คือการใช้งานที่สมบูรณ์และเชื่อถือได้มากขึ้นของสคริปต์ทั้งสองในคำตอบเหล่านี้ (ตัวแรกและตัวที่สอง ) สำหรับคำถามนี้ สคริปต์นี้อนุญาตให้คุณวาง URL แบบเต็มของไฟล์หรือ ID ไฟล์ลงในกล่องแก้ไขแรกในกล่องโต้ตอบจากนั้นส่งคืนการแสดงข้อความของพา ธ รวมถึงลิงก์ไปยังไดเรกทอรีหลัก คำแนะนำในการติดตั้งเหมือนกับยาโคบที่แสดงไว้ด้านบนฉันคัดลอกไว้ด้านล่างเพื่อความสมบูรณ์

หมายเหตุ: APIs บางตัวที่ใช้ในสคริปต์เหล่านี้ทั้งหมดล้าสมัยแล้ว พวกเขายังคงทำงานเหมือนเมื่อโพสต์นี้ถูกสร้างขึ้น แต่อาจจะหยุดทำงานในอนาคต

//
// 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 ตอนท้าย) จะช่วยให้คุณเรียกใช้สคริปต์แบบสแตนด์อะโลน

1
เพียงแค่ทราบ: "ด้านบน" ไม่มีบริบทใด ๆ ในคำตอบเนื่องจากสามารถเรียงคำตอบได้หลายวิธี ดีกว่าที่จะเชื่อมโยงกับคำตอบที่คุณอ้างอิง
เบียร์

ขอบคุณอัลฉันใหม่เพื่อ StackExchange ฉันลบการอ้างอิง "ด้านบน" และลิงก์ที่ใช้แทน
Greg L.

-2

Google ได้เสนอวิธีแก้ไขปัญหาดังกล่าวแล้ว:

สมมติว่าคุณกำลังมองหาเอกสาร PDF ชื่อ myreport.pdf

คุณค้นหา myreport คุณจะได้รับรายการเอกสารที่ตรงตามเกณฑ์

หากคุณต้องการที่จะรู้ว่าโฟลเดอร์มันมีอยู่ในเพียงแค่คลิกขวาและคลิกที่ค้นหาในไดรฟ์ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.