This Google Script saves Gmail attachments to Drive and shares the saved files with users based on rules defined in the message body itself. Here’s a sample rule:
# view@example.com, v #
# comment2@example.com, comment@example.com, c#
# edit1@example.com, edit2@example.com, e #
In the above case, the file(s) would be shared with all these users but the sharing permissions would be different. The user view@example can only view (v) the document, the users edit@example have editing permissions while others have commenting permissions.
function ShareDriveFiles() {
var threads = GmailApp.search('subject:#share');
for (var t in threads) {
var messages = threads[t].getMessages();
for (var m in messages) {
var attachments = messages[m].getAttachments();
if (attachments.length) {
var body = messages[m].getPlainBody().replace(/\s*/g, '').toLowerCase();
for (var a in attachments) {
var rules = body.match(/(#[^#]+,[e|v|c]#)/g);
if (rules) {
var file = DriveApp.createFile(attachments[a]);
for (var r in rules) {
var line = rules[r].substr(1, rules[r].length - 2).split(',');
for (var s = 0; s < line.length - 1; s++) {
switch (line[line.length - 1]) {
case 'e':
file.addEditor(line[s]);
break;
case 'v':
file.addViewer(line[s]);
break;
case 'c':
file.addCommenter(line[s]);
break;
default:
break;
}
}
}
}
}
}
}
}
}