web-dev-qa-db-ja.com

Googleドキュメントの親フォルダーを表示する方法は?

多くの場合、Googleドキュメント(私のドキュメントまたは組織の共有ドキュメント)への直接リンクがあり、同じフォルダー内に保存されているドキュメントを検索する必要があります。そのためには、ドキュメントが入っているフォルダーを判別する必要があります。

それを行う方法はありますか?

89
Claus

ドキュメントは複数のフォルダにある可能性がありますが、UIを使用してそれらのリストを取得できます。

ドキュメントのタイトルの横にあるフォルダーアイコンをクリックします。ドキュメントが単一のフォルダーにある場合、フォルダーを新しいタブで開くアイコン、フォルダー内の他のドキュメント、および現在のドキュメントを移動するオプションを含むフォルダー名を表示するビューを取得します。

enter image description here

ドキュメントが複数のフォルダーにある場合、各フォルダーへのハイパーリンクを含むフォルダーのリストを取得します。

Screenshot of two parent folders

70
pkaeding

フォルダアイコンがありませんか?

ファイル名の右側に小さなフォルダーがない場合は、File > Document details...を選択して、少なくとも親ディレクトリ名を表示できます。例えば。:

When the little folder icon is missing...

そして、あなたは地獄のワルドがどこにあるかを見つけるでしょう。 I found myself in world-2!

12
broc.seib

マウスのクリックでドキュメントの親フォルダーに移動する手段を提供しましょう。

以下のスクリプトをドキュメントの「コンテナにバインドされた」スクリプトエディタに配置します。これを行うには、ドキュメントを開き、ドキュメントメニューバーから[ツール]> [スクリプトエディター...]を選択します。

そのドキュメントのスクリプトを初めて編集する場合、デフォルトのコードがエディターの画面に表示されます。スクリプトの内容を次のコードに置き換えるだけです。以下にリストされている関数onOpen()とlistParentFolders()の両方を含めます。

エディターでスクリプトを保存してから、関連ドキュメントを表示する参照ウィンドウを「更新」します。 Utilsという名前のドキュメントの新しいメニュー項目が表示されます。 Utilsメニューパッドをクリックすると、メニューポップアップ、Show Pathが表示されます。このスクリプトは、ディレクトリパスをハイパーリンクのリストとして表示します。

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

2014-04-04の時点で、ドキュメントからそれを含むフォルダーに移動する方法がいくつかあります。

開いているドキュメントから、ドキュメントのタイトルの横にあるフォルダーアイコンをクリックします。 「この項目は次のとおりです」と含まれるフォルダー名を示すダイアログが表示されます。フォルダ名はフォルダにリンクされています。代わりに「移動」ダイアログが表示される場合、ドキュメントを含むフォルダがルートになります。ドキュメントであるか、明示的に追加した場合は、マイドライブにあります。そうでない場合は、ドキュメントリストビューの左側にあるフォルダーリストの[その他]> [すべてのアイテム]を試してください。

ドキュメント検索ビューから、アイテムを選択します。 [その他]> [詳細とアクティビティ]> [詳細]> [フォルダ]。リストされているフォルダ名は、対応するフォルダにリンクされています。

2014-12-03の時点で、共同のGoogleドキュメントではないファイルについて、ファイルビューからそのフォルダーを含むフォルダーに移動する方法がわかりません。方法がわかっている場合は、この回答をコメントまたは編集してください。

5
Matt McClure

いいえ、ドキュメントURLまたはドキュメント自体からこれを行う方法はありません。ドキュメントのタイトルを取得して、ドライブリストビューで検索する必要があります。検索結果にはドキュメントのタイトルが表示され、親フォルダーの名前も灰色で表示されます。

2
OnenOnlyWalter

更新:GoogleはこれらのAPIを廃止しました。

注:これは、新しいドライブUIを使用して本当に必要なくなりました...

  1. 検索またはドキュメントリストがある場合は、検索するファイルをハイライトします
  2. 右上の[i](情報)ボタンをクリックします
  3. [詳細]をクリックします(デフォルトの[アクティビティ]に対して)
  4. 共有と保存場所などが表示されます

これはすでに答えられていることに気づきましたが、検索中に人々がそれを見つけた場合に備えて(私はそうしました)、いくつか追加します。 Google App Scriptを初めて使用する場合は、 このリンク を参照してください。

@Jacob Jan Tuinstraと@Drawnのスクリプトに感謝しますが、どちらも私が必要なものではなかったので、私は彼らの両方を使って私のものを作成しました。以下のスクリプトは、GAppsスクリプトエディターに貼り付けてから、Webアプリとして公開する必要があります。後で再利用するために、リンクを保存/ブックマークする必要があります。

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は次のようになります。 Script UI

ファイルのIDはURLから取得されることに注意してください。つまり、以下のURLサンプルの「<...>」を参照してください。

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

親フォルダー

ドキュメントのキーに基づいて、親フォルダーを取得する小さなスクリプトを作成しました。

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

こんな感じ

enter image description here

インストールする

  1. goto script.google.com 、ログイン中
  2. 新しいスクリプトを開始する
  3. コードを貼り付けてバグアイコンを押します。プレス承認。
  4. file>menaged versionの下にスクリプトを保存します。
  5. Publish>Deploy as web appに移動して、更新を押します
  6. 表示されたURL(最後に実行)を使用すると、スタンドアロンスクリプトを実行できます。

注意

親フォルダーのみが記載されています(正確に必要なもの)が、フルパスは公開されません。

1

この質問に対するこれらの回答( 最初の1つ および 2番目の1つ )の2つのスクリプトのより完全で信頼性の高い実装を次に示します。このスクリプトを使用すると、ファイルの完全な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;
}

次のようになります:

Find parent folder UI

インストールするには:

  1. goto script.google.com 、ログイン中
  2. 新しいスクリプトを開始する
  3. コードを貼り付けてバグアイコンを押します。プレス承認。
  4. file> menaged versionでスクリプトを保存します。
  5. goto Publish> Deploy as web app and press update
  6. 表示されたURL(最後に実行)を使用すると、スタンドアロンスクリプトを実行できます。
1
Greg L.