Skip to content

Instantly share code, notes, and snippets.

@eojji
Created June 27, 2018 07:05
Show Gist options
  • Save eojji/2975217d032639d8b4b0f7af8700c564 to your computer and use it in GitHub Desktop.
Save eojji/2975217d032639d8b4b0f7af8700c564 to your computer and use it in GitHub Desktop.
driveInsertByEmail.gs Request Team Drive - 3 https://m.cafe.naver.com/eojji/313
function drivePermissionsInsertByEmail_(email, id) {
// https://developers.google.com/drive/v2/reference/permissions
var value = email;
var type = 'user';
var role = 'organizer';
var resource = {
'value': value,
'type': type,
'role': role
};
var optionalArgs = {
supportsTeamDrives : true
};
try {
return Drive.Permissions.insert(resource, id, optionalArgs);
} catch(e) {
console.warn('Error %s %s, email: %s - Drive.Permissions.insert', e.name, e.message, email);
return e;
}
}
function getDriveName_() {
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var day = dt.getDate();
var hours = dt.getHours();
var minutes = dt.getMinutes();
var seconds = dt.getSeconds();
// https://stackoverflow.com/questions/8043026/javascript-format-number-to-have-2-digit
month = ("0" + month).slice(-2);
day = ("0" + day).slice(-2);
hours = ("0" + hours).slice(-2);
minutes = ("0" + minutes).slice(-2);
seconds = ("0" + seconds).slice(-2);
var dateYmd = year + month + day +'_'+ hours + minutes + seconds;
return '_gfolderCopy ' + dateYmd;
}
function teamDriveInsertByName_(name) {
var resource = {
"kind": "drive#teamDrive",
"name": name,
};
var requestId = Date.now().toString();
try {
return Drive.Teamdrives.insert(resource, requestId);
} catch(e) {
return e;
}
}
function driveInsertByEmail_(email, name) {
var drive, driveName;
if (name && name.length > 1) {
driveName = name.trim();
} else {
driveName = getDriveName_();
}
drive = teamDriveInsertByName_(driveName);
if (!drive || !drive.id) {
console.log('Error %s, %s - Drive.Teamdrives.insert', drive.name, drive.message);
return;
}
// G 폴더 카피 Group Team Drive Sheet
var groupTeamDriveSheetId = PropertiesService.getScriptProperties().getProperty('groupTeamDriveSheetId');
var ss = SpreadsheetApp.openById(groupTeamDriveSheetId);
var sheet = ss.getSheets()[0];
var row, column, numRows, numColumns;
var lastRow = sheet.getLastRow();
var newDate = new Date();
var rowContents = [newDate, email, 'Name', 'Contact', driveName, drive.id, '-'];
sheet.appendRow(rowContents);
// -----------------------------------------------------
var permissions = drivePermissionsInsertByEmail_(email, drive.id);
if (permissions && permissions.emailAddress) {
console.log('email: %s, permissions role[%s], team role:%s, driveName[%s]'
, permissions.emailAddress, permissions.role, permissions.teamDrivePermissionDetails[0].role, driveName);
} else {
console.log('email: %s, Not permissions.id, driveName[%s]', email, driveName);
// delete team drive
// https://developers.google.com/drive/v2/reference/teamdrives/delete
try {
Drive.Teamdrives.remove(drive.id);
} catch(e) {
console.warn('error %s %s, email: %s, Drive.Teamdrives.remove', e.name, e.message, email);
}
}
}
function t_driveInsertByEmail() {
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
if (!formResponses || formResponses.length < 1) {
Logger.log('Not found form.getResponses()');
return;
}
var len = formResponses.length;
var response = formResponses[len - 1];
var responseId = response.getId();
var time = response.getTimestamp();
var email = response.getRespondentEmail().trim();
var itemResponses = response.getItemResponses();
var name = itemResponses[0].getResponse();
Logger.log('Time: %s, Email: %s, Name: %s', time, email, name);
var role = getGroupRoleByUserEmail_(email);
// https://developers.google.com/apps-script/reference/groups/role
if (!role || role == GroupsApp.Role.PENDING) {
Logger.log('email: %s, Not found Role or PENDING', email);
return;
}
Logger.log('email: %s, role: %s', email, role);
driveInsertByEmail_(email, name);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment