Googleドライブでフォルダーを複製できますか?


44

Googleドライブのフォルダー全体を週に1回複製する必要があります。フォルダーには約25個のファイルがあります。これを行う簡単な方法は何ですか?


Webインターフェイスから私は仮定します。これは、クライアントを使用してPC上のフォルダーと同期している場合、アカデミックになります。
エール

そのフォルダにあるものだけをバックアップしたいですか?または、別のGoogleアカウントに追加しようとしていますか?フォルダの内容全体が必要ですか、それともポインタだけで必要ですか?
ウィリアム

それらに異なるアクセス許可を持たせたいので、複製する必要がありました。そのためには、環境を分離する必要があります。しかし、PC用のGoogleドライブを使用するとうまくいきました!
Dude2012

フォルダのコピークロームプラグイン:chrome.google.com/webstore/detail/copy-folder/...
サイモン・ウッドサイド

回答:


19

PCでGoogleドライブアプリケーションを使用している場合、Googleドライブディレクトリ内のフォルダをコピーして貼り付けると、コピーされます。Webアプリケーションからこれを行うことができるとは思わない。


4
Linuxユーザーにとって残念なことに、今日までGoogleは「Googleドライブアプリケーション」をサポートしていません。したがって、彼らは「と呼ばれるものを使用する必要がありgrive
iammilind

新しいフォルダー全体をWebに再アップロードしますか、またはフォルダーの内容が同一であり、完全に再アップロードせずに複製することを知っていますか?
ジュリアン14

@ジュリアン私はそれが全体を再アップロードすると仮定します。
ComputerLocus 14

実際にすべてのファイルを再アップロードすることを確認しました。残念。
ジュリアン14

アプリなしで、それは右クリックすることも可能である-のzipとしてフォルダをダウンロードし、アーカイブ解除した後、それを再度アップロードする
kamidude

10

この問題に対処するためだけにApp Scriptを作成しました。フォルダーの内容とその中の構造をコピーできます。スクリプトは、Googleドライブデスクトップアプリの必要性を排除するのに役立ちます。トリガーを追加すると、プロセスを自動化することもできます。

GDriveコピーフォルダー構造/コンテンツスクリプト

Googleドライブのフォルダー構造をコピーする

ご注意ください :

  • これにより_copy、すべてのサブフォルダーにサフィックスが追加されます
  • folder_you_want_copied_copyあなたはドライブのサブフォルダをコピーした場合はコピーしたときに、それは最高のレベルにバブルアップしますが、Googleドライブの最上位の親階層にあります

数百のサブフォルダーと数千のファイル(一部は非常に大きい)がある非常に大きなフォルダーでも完璧に機能します。シュンムありがとうございます!
-kubusz

3
また、すべてのサブフォルダーに接尾辞「_copy」が追加されます。
マナス

5

Googleドライブのウェブインターフェースを使用している場合...

  1. 新しいフォルダーを作成し、好きな名前を付けます。

  2. 既存のフォルダに移動して、すべてのファイルを選択し、右クリックしてコピーを押します。

  3. すべてのコピーを選択し、右クリックして[移動]をクリックします。新しいフォルダを選択します。

コピーするフォルダにサブフォルダがある場合、このメソッドは機能しないことに注意してください。


4
右クリックメニューに「コピー」オプションはありません。「コピーを作成」があります。つまり、すべてのファイルのコピーを作成し、そのコピーを強調表示して新しいフォルダーに移動します。
ブリスターピーナッツ

また、新しいフォルダーに移動した後にすべてのファイルの名前を変更して、「コピー」プレフィックスを削除する必要があります。
トム

これにより、すべてのファイルのファイル名の前に「のコピー」が付きます。
イライジャ・リン

@Blisterpeanuts空のフォルダであっても、フォルダをコピーする場合、「コピーを作成」することはできません。面倒なことに、空のディレクトリ名のテンプレートから始めたい場合は、
マイケル

Ctrlキーを押しながらドラッグアンドドロップでファイルのグループを移動すると、マウスポインターの近くに「+」が表示され、機能しているように見えますが、「コピーされた」ファイルは単にハードリンクであり、同じIDを持ち、削除すると削除されますそのコピーと元のファイルの両方、最近のアクティビティから復元する必要があります。知る限り、これはGoogleドライブのバグです。
パブロA

3

OPへの非常に遅い答え、そして私は尋ねる時点でさえ可能ではないと思いますが、これは今日私がしていることです:

  1. 複製するフォルダーを選択します。
  2. 二次的にそれをクリックし、ポップアップメニューから「ダウンロード」を選択します
  3. ブラウザーでzipアーカイブを一時ディレクトリに保存します
  4. アーカイブからフォルダーを抽出し、新しい名前を付けます
  5. ドライブに戻ります。大きな青い[新規]ボタンをクリックし、ドロップダウンメニューから[フォルダのアップロード]を選択します。
  6. コンピューターに戻ります。新しく名前が付けられたフォルダーを取得して、ドライブにドラッグして戻します。
  7. トイレを流す

注: これは、小さなファイルとサブフォルダーが一緒になって小さな圧縮ファイルを作成する場合の解決策です。圧縮ファイルの合計サイズが大きくなると、有用性が低下します。


1
このソリューションの主な問題は、ドライブのコンテンツ全体をローカルに2回(圧縮と解凍の両方)保管するのに十分なスペースが必要であることは明らかですが、すべてのGoogleドキュメントを適切なMS OpenOfficeドキュメント形式にエクスポートする場合、それらをリロードするときに、それらをGoogle形式に変換し直し、これが引き起こすすべての形式の問題に対処する必要があります。
ガス

3

Lucky 711のように、私がそうする必要がない限り、サードパーティによるドライブへのアクセスを許可しないことを好みます。将来のGoogle結果の冒険者のためにここに置いておきます。フォルダとそのすべてのコンテンツをコピーします。ユースケースでは、コピーしたフォルダーを新しい親として追加するだけで、複数の親を持つファイルを処理するように作成しました。そうしたくない場合は、「この親ではない親を数える」部分をドロップします。

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();

    // Count the parents that aren't this parent
    var countOfOtherParents = 0;
    var parents = file.getParents();
    while (parents.hasNext()) {
      var parent = parents.next();
      if (parent.getId() !== folderToCopyId) { countOfOtherParents++; }
    }

    // If it's unique, then copy it. Otherwise, just add it to the new parent.
    if (countOfOtherParents == 0) {
      file.makeCopy(file.getName(),newFolder);
    } else {
      newFolder.addFile(file);
    }

  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}

参考として、新しいフォルダーを別の親として追加するだけでなく、複数の親を持つファイルの新しいコピーを作成する場合、短いコードは次のようになります。

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    file.makeCopy(file.getName(),newFolder);
  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}

このスクリプトをどのように実行しますか?または、どのように入力パラメーターを取得しますか?
roydukkey

入力は、コピーするフォルダーのID、コピーを作成するフォルダーのID、およびコピーに付ける名前です。フォルダーのIDを取得するには、そのフォルダーに移動して、URLの末尾を確認します。これはおそらく1jVlkj------------------------Gk3D7、すべてのダッシュが文字であることを除いて似たようなものです。その意味不明な文字列は、Googleが割り当てた一意のIDです。3つの入力を取得したら、次のような別の関数からこの関数を呼び出しますcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast

これはほぼ完璧ですが、私の場合、異なるフォルダーにリンクされたファイルがあります。そのため、ファイルをコピーする代わりに、リンクをコピーするだけです。
-roydukkey

複数の場所に存在する(つまり、複数の親を持つ)ファイルを意味する場合は、投稿で対処されています。countOfOtherParents++;行のみをコピーして、それを実行できます。私のユースケースでは、ファイルの新しいコピーを作成するのではなく、それらのファイルが別の親を取得することを明示的に望んでいました。他のフォルダを開くハイパーリンクとして機能するファイルを意味する場合、それができるとは知りませんでした。
エンジニアトースト

IE、最小限の変更はこれになりますが、「よりクリーンな」コードはこれに
エンジニアトースト

3

Google Spreadsheetsの「フォルダのコピー」アドオンを使用できます。

  1. Googleスプレッドシートを作成する
  2. をクリックしAdd-ons > Get add-onsて、「フォルダのコピー」アドオンを追加します `
  3. コピーするフォルダーを選択します
  4. やった

ビデオチュートリアルを参照してください

または、このクロムWebストアのGoogle App Scriptを使用して、この結果を達成できます。これは、Googleスプレッドシートの作成を必要としません。


7
これは、アドオンさせることが必要です「表示をし、あなたの電子メールを読む」
マイケル・コール

@MichaelCole、およびその他の問題のある権限:スプレッドシートの管理、任意のWebサイトの読み込み、さらに悪いことにオフラインアクセス。アクセス許可の問題が修正されるまで、これをインストールしないことをお勧めします。
ガス

ああ、それは私たちが今住んでいる勇敢な新しいケンブリッジアナリティクスの世界です
18年

スプレッドシートの管理では、実行中にスプレッドシートのログファイルを追加します。
アジャイ

@Ajayそれは私の悪かった。再送信していただきありがとうございます。
jonsca

1

私は複数のマシンを使用しており、それらすべてにドライブアプリを配置したくないので、サイトにコピーするために以下のスクリプトを作成しました。ugくて基本的ですが、動作します。フォルダーとそのファイルのみをコピーし、サブフォルダーはコピーしません。改善の余地があると確信していますので、お気軽にこれを受け取って改善してください。しかし、少なくとも最初から役に立つと思います。

以下のコメントによると、これはGoogle Appsスクリプトです。これを使用する方法は、Googleスクリプトアプリを開き、すべてのコードをコピーして空のスクリプトに貼り付けることです。その後、メニューの公開オプションをクリックして、Webアプリとして展開を選択します。次に、最新のコードリンクをクリックするか、URLをコピーしてブラウザに貼り付けます。次に、コピーするフォルダーとコピーボタンを入力できるボックスが表示されます。これにより、指定したフォルダーのコピーと、その中のすべてのファイルのコピーが作成されます。

注:サブフォルダーはコピーせず、ファイルのみをコピーします。

function doGet()
{
  // Build UI
  // Create UI object
  var copyUI = UiApp.createApplication();
  // Create Input box referenced later by the name explicitly set below
  var userInput = copyUI.createTextBox().setName("textbox1");
  //create button
  var enterButton = copyUI.createButton("copy");
  // add all objects to UI object
  copyUI.add(userInput).add(enterButton);

  //Create clicke event handeler and add input field to handeler
  var clickHandler = copyUI.createServerHandler('onClick')
  .addCallbackElement(userInput);

  // add handelrer to the copy button
  enterButton.addClickHandler(clickHandler);

  // instantiate GUI
  return copyUI;
}


function onClick(e)
{
  // call currently active application/gui
  var app = UiApp.getActiveApplication();

  //Pass in the value of the e paramater named 'textbox1'
  var input = e.parameter.textbox1;

  // log value passed in from user input
  //Logger.log(input);

  // perform file copy
  CopyFile(input);
}


function CopyFile(filename)
{
  // declaire variables
  var newFolder_String;
  var newFolder;
  var originalFolder;
  var fileArray;
  var loopCount;
  var arrayLength;
  var newFile;
  // get original folder id
  originalFolder = DocsList.getFolder(filename);
  Logger.log(originalFolder.getId());


  // create new "copy" folder using: createFolder(<filename>_copy)
  newFolder_String = filename + "_Copy";
  Logger.log(newFolder_String);
  newFolder = DocsList.createFolder(newFolder_String);

  // get folders and files from original file using: 
    //   getFiles() from original file into an array
  fileArray = originalFolder.getFiles();

  // Copy files into folder:
  arrayLength = fileArray.length;
  loopCount = 0;

  // looping through array of file
  for (loopCount = 0; loopCount < arrayLength; loopCount++)
  {
    // create file copies using: file[i].makeCopy() and newFile.addToFolder(CopyFolder)
    newFile = fileArray[loopCount].makeCopy();
    Logger.log(newFile.getName());
    newFile.addToFolder(newFolder)
  }

}

-1

フォルダを複製するには、CTRLボタンを押しながら別のフォルダにドラッグアンドドロップします。


9
それは複製されません。ポインタを作成するだけです。これをテストするには、フォルダーをCtrlキーを押しながらドラッグアンドドロップしていくつかの異なる場所に移動し、フォルダー内にファイルを作成しました。ファイルはすべての場所に表示されます。
エール

そのとおり。彼らはそれを「フォルダの追加」と呼んでいます
-th3an0maly

4
-1は機能しません。
Pacerier 14年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.