目次
Google Apps Scriptを使用してGoogle Driveフォルダのコンテンツを他のフォルダにコピーするコードです。
背景
Googleは、GSUITE組織のポリシーに従い、別の組織が管理する他のフォルダへのコンテンツの移動を許可していません。
また、Googleは、コンテンツの所有者を他の組織のユーザーに変更することも許可していません。
例えば、XXXXX@gmail.com
は、GSUITE組織によって管理されている共有フォルダにフォルダを移動することはできません。
そして、XXXXX@gmail.com
は、GSUITEユーザー内のユーザーに所有者を変更することはできません。
しかし、このような状況でもユーザーはフォルダのコンテンツを読むことができるため、コンテンツのコピーは可能です。
このスクリプトは、宛先フォルダが別のGSUITE組織によってアクセス可能で管理されている場合でも、フォルダを再帰的に他のフォルダにコピーします。
そういうページもあるけど
再帰的にフォルダをコピーするためのウェブページは存在しますが、 GSUITE組織内のユーザーは、他のユーザーが管理するスクリプトを使用することが制限されることがあります。 そのため自分でスクリプトを作成して実行するようにしました。
こちらのスクリプトを、お使いのGSUITEユーザで実行すれば、フォルダの中身をコピーできます。
コード
Google Drive のフォルダを開いた時のURLから、フォルダのIDを取得します。そのIDをコードの該当箇所に記入してスクリプトを実行すると、フォルダ内のコンテンツがコピーされます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
function myFunction() { // put source folder ID. const fromFolder = DriveApp.getFolderById('1234567ABCDEFGHIJKLMNOPQRSTUVWXYZ') // put destination folder ID. const toFolder = DriveApp.getFolderById('1234567abcdefghijklmnopqrstuvwxyz') // copy the folder content recursively. copy(fromFolder, toFolder) } function copy(fromFolder, toFolder) { // copy files var files = fromFolder.getFiles() while (files.hasNext()) { var file = files.next(); var newFile = file.makeCopy(toFolder) newFile.setName(file.getName()) } // copy folders var folders = fromFolder.getFolders() while (folders.hasNext()) { var folder = folders.next() var newFolder = toFolder.createFolder(folder.getName()) copy(folder, newFolder) } } |
Gist にも掲載しています。