
どうも こんにちは。飛鳥です。
Google ドライブは複数の人とデータを共有するのに非常に便利なツールですが、複数の団体で活動している方は、団体ごとや年度ごとに異なる Google ドライブを管理していると思います。それぞれに固有のフォルダ構造や共有設定があり、次年度に同じ構造と設定を維持するのは意外と手間がかかりますよね。
特に悩ましいのが、フォルダ階層の設定をまるごとコピーする機能が Google ドライブに標準では備わっていないという点です。しかし、Google Apps Script (GAS) を使えば、この問題を解決できます!
目次
GAS でフォルダ構造と共有設定をコピーする方法
今回は ChatGPT の助けを借りて作成したスクリプトを紹介します。自分の環境では問題なく動作しましたので、ご参考になれば幸いです(使用は自己責任でお願いします)。
使い方
- コピー元フォルダの ID を調べる
- コピー先フォルダの ID を調べる
- 下記のコードの該当箇所を変更して実行する
コード
function copyFolderStructureWithPermissions() {
var sourceFolderId = 'XXXXXXXXXXXXXX'; // コピー元フォルダのID
var destinationFolderId = 'YYYYYYYYYYYYYY'; // コピー先フォルダのID
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var destinationFolder = DriveApp.getFolderById(destinationFolderId);
copyFolderContents(sourceFolder, destinationFolder);
}
function copyFolderContents(sourceFolder, destinationFolder) {
// フォルダ内のすべてのファイルをコピー
var files = sourceFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var copiedFile = file.makeCopy(destinationFolder);
copyPermissions(file, copiedFile);
}
// フォルダ内のすべてのサブフォルダをコピー
var subFolders = sourceFolder.getFolders();
while (subFolders.hasNext()) {
var subFolder = subFolders.next();
var newSubFolder = destinationFolder.createFolder(subFolder.getName());
copyPermissions(subFolder, newSubFolder);
copyFolderContents(subFolder, newSubFolder);
}
}
// 共有設定をコピー
function copyPermissions(source, destination) {
var editors = source.getEditors();
var viewers = source.getViewers();
// 編集者をコピー
editors.forEach(function(editor) {
destination.addEditor(editor);
});
// 閲覧者をコピー
viewers.forEach(function(viewer) {
destination.addViewer(viewer);
});
}
このスクリプトは次のことを行います:
- 指定されたソースフォルダから宛先フォルダへファイルをコピー
- サブフォルダを再帰的にコピー
- 編集者と閲覧者の権限設定をコピー
組織や団体での Google ドライブ管理が少しでも楽になれば嬉しいです。何か質問があればコメントしてください!
Google Apps Script (GAS) のセットアップと実行方法
Google Apps Script を使ってフォルダ構造と共有設定をコピーするスクリプトを設定・実行する方法を説明します。
1. Google Apps Script プロジェクトの作成
- Google ドライブ(drive.google.com)にアクセスします
- 画面左上の「新規」ボタンをクリックします
- 「その他」→「Google Apps Script」を選択します
- 見つからない場合は「その他」→「アプリを追加」から「Google Apps Script」を検索してインストールします
2. スクリプトの入力
- 新しく開いたエディタウィンドウで、デフォルトのコード(
function myFunction() { }
など)を削除します - 前述のスクリプトを貼り付けます
- プロジェクト名を変更するには、画面上部の「無題のプロジェクト」をクリックして適切な名前(例:「フォルダ構造コピー」)を入力します
3. フォルダ ID の取得方法
- Google ドライブでコピー元のフォルダを開きます
- ブラウザのアドレスバーに表示されている URL を確認します
- URL の形式は
https://drive.google.com/drive/folders/XXXXXXXXXXXXXXXXXXXXXXXX
のようになっています - この「XXXXXXXXXXXXXXXXXXXXXXXX」の部分がフォルダ ID です
- 同様にコピー先フォルダの ID も取得します
4. スクリプトの編集
- スクリプト内の以下の行を編集します:
var sourceFolderId = 'XXXXXXXXXXXXXX'; // コピー元フォルダの ID に変更var destinationFolderId = 'YYYYYYYYYYYYYY'; // コピー先フォルダの ID に変更
5. スクリプトの実行
- スクリプトエディタの上部にある「実行」ボタンをクリックします
- 初回実行時は、Google から認証を求められます
- 「許可を確認」をクリックします
- アカウントを選択します
- 「詳細」→「(プロジェクト名)に移動」をクリックします
- 「許可」をクリックして必要な権限を付与します
- スクリプトが実行され、指定したフォルダ構造と共有設定がコピーされます
6. 実行結果の確認
- 実行が完了したら、コピー先フォルダを開いて正しくコピーされているか確認します
- フォルダ構造とファイル、共有設定が正しくコピーされているか確認します
注意事項
- 大量のファイルやフォルダをコピーする場合、Google の制限によりスクリプトがタイムアウトする可能性があります
- 権限の付与は自分のアカウントでログインしている状態で行う必要があります
- スクリプトを実行するアカウントには、両方のフォルダに対する適切なアクセス権が必要です