2016-09-05 13 views
0

App Scriptを使用して、Googleドライブのフォルダを別のGoogleドライブにコピーしたいとします。ここでは、これは、ターゲットメールによって1つのドライブから別の共有フォルダのためのコードであるApp Scriptを使用してGoogleドライブのフォルダを別のGoogleドライブアカウントにコピーするにはどうすればよいですか?

// Make copy in Google Drive 
function CopyTamplate(companyName) { 

var folder = DriveApp.getFolderById("<<folder_id>>"); 
var folderid = folder.getId(); 

folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW); 

Drive.Permissions.insert(
    { 
    'role': 'reader', 
    'type': 'user', 
    'value': "[email protected]" 
    }, 
    folderid, 
    { 
    'sendNotificationEmails': 'false' 
    }); 


var sourceFolder = "Company1_copy_tamplete"; 
var targetFolder = companyName; 

var source = DriveApp.getFoldersByName(sourceFolder); 
var target = DriveApp.createFolder(targetFolder); 

if (source.hasNext()) { 
    copyFolder(source.next(), target); 
    } 
} 

:今、私はアカウントをターゲットとGoogle drive.Hereは私のアプリのスクリプトコードであるターゲットにフォルダをコピーしようとするフォルダを共有しています関数copyFolder:

function copyFolder(source, target) { 

var folders = source.getFolders(); 
var files = source.getFiles(); 

while(files.hasNext()) { 
    var file = files.next(); 
    file.makeCopy(file.getName(), target); 
} 

while(folders.hasNext()) { 
    var subFolder = folders.next(); 
    var folderName = subFolder.getName(); 
    var targetFolder = target.createFolder(folderName); 
    copyFolder(subFolder, targetFolder); 
} 
} 

私はこのスクリプト関数を呼び出すためにGoogle Script Execution APIを使用していますが、このエラーが発生しています。 スクリプトエラーメッセージ: "アクションが許可されていません"。問題を解決したり、このタスクを実行する別の方法を提案してください。ありがとうございました。

答えて

1

これは、Drive.Permissions.insertで指定したロールが'role': 'reader'であるために発生しています。

-Readファイルまたはフォルダ

-Readのメタデータ(例えば、名前、説明)ファイル

の内容:​​を読む、これらは「読者」の唯一許可される操作です私は 所有者または ライターに役割を設定することをお勧めフォルダ

内の項目の

-Readリスト代わりに。

関連する問題