Created
June 27, 2018 07:05
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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