我有一个文件夹和文件列表,需要与共享驱动器中的不同用户(作为查看者和编辑者)共享。当我复制这些文件夹和文件时,它没有复制用户。
我有一个表,下面有以下信息。在将文件夹及其内容复制到 Shared Drive 之前,我拉出了查看器和编辑器。我的目标是运行代码,分别拉出共享驱动器中的新文件夹或文件Id以及查看器和编辑器。
复制到共享驱动器之前的信息,以获得查看器和编辑器。路径,名称,文件夹ID,用户访问权限,所有者,查看者,编辑者,文件夹文件日期。
复制到共享驱动器后的信息。路径、名称、文件夹ID、用户访问、查看者、编辑、文件夹文件日期。
我在过去使用过这段代码,对于MyDrive文件夹共享(共享给<3人)工作得很好,但当我试图对共享驱动器文件夹文件做同样的工作时,它似乎并不工作。是否有一个简单的方法来添加这些用户,并默默地共享文件夹和文件?
function setPermissions(){
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('sheetname');
var start = 2;
var last = sheet.getLastRow();
var sheetValues = ssFilesSheet.getRange(start,1,last,ssFilesSheet.getLastColumn()).getValues();
for (var i = 0; i < sheetValues.length; i++) {
var row = sheetValues[i];
var id = row[0];
var reader = row[3];
var writer = row[4];
var roles = {
writer: [writer],
reader: [reader]
};
for(var key in roles) {
var role = roles[key];
role.forEach(function (email) {
var resource = {
role: key,
type: "user",
value: email
}
if(key == "commenter") {
resource.role = "reader";
resource.additionalRoles = ["writer"]
}
Drive.Permissions.insert(resource,
id,
{sendNotificationEmails: false,
// supportsTeamDrives:true,
supportsAllDrives: true,
// useDomainAdminAccess:false });
});
}
}
非常感谢您的时间和帮助
writer
或 reader
的文件,目前你需要将请求参数设置为 supportsAllDrives
到 true
,所以在应用程序脚本中。Drive.Permissions.insert(
{
'role': 'owner',
'type': 'user',
'value': 'user email'
},
folder/fileid,
{
'sendNotificationEmails': 'false',
'supportsAllDrives' : `true`
});
owner
的共享驱动器上的文件通过Drive API目前还无法实现。一直以来都有这方面的功能请求,因此 Google 很可能会在未来加入这项功能。更新
根据您更新的代码,如果您想提取位于同一单元格中的多个电子邮件地址,您需要将它们作为一个字符串检索,并将它们转换为一个数组,例如,使用 split()
.
样品。
for (var i = 0; i < sheetValues.length; i++) {
var row = sheetValues[i];
var id = row[0];
var reader = row[1];
var writer = row[2];
var roles = {
writer: writer,
reader: reader
};
for(var key in roles) {
var role = roles[key];
var roleArray = role.split(", ");
roleArray.forEach(function (email) {
if(email !="" && email !=" "){
var resource = {
role: key,
type: "user",
value: email
}
if(key == "commenter") {
resource.role = "reader";
resource.additionalRoles = ["writer"]
}
Logger.log("value: " + email);
//Customize parameters sendNotificationEmails:false,supportsTeamDrives:true,useDomainAdminAccess:false
Drive.Permissions.insert(resource,
id,
{sendNotificationEmails: false,
// supportsTeamDrives:true,
supportsAllDrives: true,
// useDomainAdminAccess:false });
});
}
})
};
}
ssFilesSheet.getRange(i+2,6).setValue('Added User Permissions');