我想使用单元格值作为驱动器名称来创建多个共享驱动器。
我可以获取范围的值,但是我不知道如何捕获数组数组中的每个值。我需要获取那些单元格值来设置驱动器名称。
这是我的代码:
function createDriveID(){
var department = SpreadsheetApp.getActiveSheet().getRange(1,1,SpreadsheetApp.getActiveSheet().getRange("A1").getDataRegion().getLastRow(),1).getValues();
var lastname = SpreadsheetApp.getActiveSheet().getRange(2,2,SpreadsheetApp.getActiveSheet().getRange("B2").getDataRegion().getLastRow(),1).getValues();
var firstname = SpreadsheetApp.getActiveSheet().getRange(3,3,SpreadsheetApp.getActiveSheet().getRange("C3").getDataRegion().getLastRow(),1).getValues();
for (var i=0; i<department.length; i++ ) {
var dep = department[i].toString();
var dept = dep.substring(0,3).toUpperCase();
//Logger.log(dept);
}
for (var x=0; x<lastname.length; x++) {
//var stri = lastname[x].toString();
var lname = lastname[x].toString();
// Logger.log(lname);
}
for (var y=0; y<firstname.length; y++) {
//var string = firstname[y].toString();
var fname = firstname[y].toString();
// Logger.log(fname);
}
//var dept = SpreadsheetApp.getActiveSheet().getRange(37,1,SpreadsheetApp.getActiveSheet().getRange("A37").getDataRegion().getLastRow(),1).setValues(department);
//Generate Drive ID
var newDrive = Drive.newTeamDrive();
var capabilities = Drive.newTeamDriveCapabilities();
capabilities.canAddChildren = true;
capabilities.canDownload = true;
capabilities.canEdit = true;
capabilities.canDeleteDrive = true;
capabilities.canManageMembers = true;
capabilities.canShare = true;
newDrive.capabilities = capabilities;
newDrive.name = 'CCW' + dept + '-' + fname + " " + lname;
var createdDrive = Drive.Drives.insert(newDrive, 'BCK' + Math.random());
//Add Managers on Drive
var permission = Drive.newPermission();
permission.type = 'group'; //Type can be user, domain, group etc.. check role and type section at https://developers.google.com/drive/api/v2/reference/permissions/insert
permission.role = 'fileOrganizer';
permission.value = "xxxx@email.com"; //It can be email or domain or group name based on type
Drive.Permissions.insert(permission, createdDrive.id, {
sendNotificationEmails:false, //Make it true to send notification
supportsTeamDrives:true,
useDomainAdminAccess:false
});
//---------------------Copying of Folders--------------------------------------
var sourcefolder = DriveApp.getFolderById('1O1JSpx0-luxVW31b9Kmz4AYHwJe1dC77');
var destfolder = DriveApp.getFolderById(createdDrive.id);
copyCustomFiles(sourcefolder, destfolder);
//---------------------Copying END----------------------------------
//Add User to Drive
var resource = {
'value': 'xxxx@email.com',
'type': 'group',
'role': 'organizer'
}
Drive.Permissions.insert(resource, createdDrive.id, {"supportsTeamDrives": true});
//End of Generate Drive ID
Logger.log(createdDrive.id);
SpreadsheetApp.getActiveSheet().getRange(37,1,SpreadsheetApp.getActiveSheet().getRange("A37").getDataRegion().getLastRow(),1).setValues(createdDrive.id);
}
此外,我想将所有驱动器ID插入活动工作表中。
预期输出为:
MUR是部门,然后是“姓氏”和“名字”。这些详细信息必须来自单元格值。
任何帮助将不胜感激。
答案 0 :(得分:0)
for
循环来修改代码,在该循环中,您的其余代码将嵌套在其中,并循环访问值数组的数组元素。示例:
function createDriveID(){
var sheet=SpreadsheetApp.getActiveSheet();
var department = sheet.getRange(1,1,SpreadsheetApp.getActiveSheet().getRange("A1").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(),1).getValues();
var lastname = sheet.getRange(1,2,SpreadsheetApp.getActiveSheet().getRange("B1").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(),1).getValues();
var firstname = sheet.getRange(1,3,SpreadsheetApp.getActiveSheet().getRange("C1").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(),1).getValues();
for (var i=0; i<department.length; i++ ) {
var dep = department[i][0].toString();
var dept = dep.substring(0,3).toUpperCase();
var lname = lastname[i][0].toString();
var fname = firstname[i][0].toString();
var newDrive = Drive.newTeamDrive();
var capabilities = Drive.newTeamDriveCapabilities();
capabilities.canAddChildren = true;
capabilities.canDownload = true;
capabilities.canEdit = true;
capabilities.canDeleteDrive = true;
capabilities.canManageMembers = true;
capabilities.canShare = true;
newDrive.capabilities = capabilities;
newDrive.name = 'CCW' + dept + '-' + fname + " " + lname;
var createdDrive = Drive.Drives.insert(newDrive, 'BCK' + Math.random());
...
sheet.getRange(sheet.getLastRow()+1,1).setValue(createdDrive.id);
}
}
- 请注意,用
.getValues()
检索的单元格内容存储在二维数组中。因此,要使用这些值,您需要指定 两种尺寸,例如var dep = department[i][0]
。- 假设部门,姓氏和名字的条目数相等,并且对应于要创建的驱动器数- 单个
for
循环足以遍历所有数组 同时。- 考虑到姓名和部门之间的相关性,请参阅我对您的问题的评论。