Skip to content

Commit 35e46f8

Browse files
committed
Refactor message processing into its own function
1 parent e1be114 commit 35e46f8

File tree

1 file changed

+41
-34
lines changed

1 file changed

+41
-34
lines changed

Code.gs

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,46 @@ function getOrCreateFolder(folderName) {
7070
return folder;
7171
}
7272

73+
/**
74+
* Processes a message
75+
*/
76+
function processMessage(message, rule, config) {
77+
Logger.log("INFO: Processing message: "+message.getSubject() + " (" + message.getId() + ")");
78+
var messageDate = message.getDate();
79+
var attachments = message.getAttachments();
80+
for (var attIdx=0; attIdx<attachments.length; attIdx++) {
81+
var attachment = attachments[attIdx];
82+
Logger.log("INFO: Processing attachment: "+attachment.getName());
83+
var match = true;
84+
if (rule.filenameFromRegexp) {
85+
var re = new RegExp(rule.filenameFromRegexp);
86+
match = (attachment.getName()).match(re);
87+
}
88+
if (!match) {
89+
Logger.log("INFO: Rejecting file '" + attachment.getName() + " not matching" + rule.filenameFromRegexp);
90+
continue;
91+
}
92+
try {
93+
var folder = getOrCreateFolder(Utilities.formatDate(messageDate, config.timezone, rule.folder));
94+
var file = folder.createFile(attachment);
95+
if (rule.filenameFrom && rule.filenameTo && rule.filenameFrom == file.getName()) {
96+
var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
97+
Logger.log("INFO: Renaming matched file '" + file.getName() + "' -> '" + newFilename + "'");
98+
file.setName(newFilename);
99+
}
100+
else if (rule.filenameTo) {
101+
var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
102+
Logger.log("INFO: Renaming '" + file.getName() + "' -> '" + newFilename + "'");
103+
file.setName(newFilename);
104+
}
105+
file.setDescription("Mail title: " + message.getSubject() + "\nMail date: " + message.getDate() + "\nMail link: https://mail.google.com/mail/u/0/#inbox/" + message.getId());
106+
Utilities.sleep(config.sleepTime);
107+
} catch (e) {
108+
Logger.log(e);
109+
}
110+
}
111+
}
112+
73113
/**
74114
* Main function that processes Gmail attachments and stores them in Google Drive.
75115
* Use this as trigger function for periodic execution.
@@ -107,40 +147,7 @@ function Gmail2GDrive() {
107147
var messages = thread.getMessages();
108148
for (var msgIdx=0; msgIdx<messages.length; msgIdx++) {
109149
var message = messages[msgIdx];
110-
Logger.log("INFO: Processing message: "+message.getSubject() + " (" + message.getId() + ")");
111-
var messageDate = message.getDate();
112-
var attachments = message.getAttachments();
113-
for (var attIdx=0; attIdx<attachments.length; attIdx++) {
114-
var attachment = attachments[attIdx];
115-
Logger.log("INFO: Processing attachment: "+attachment.getName());
116-
var match = true;
117-
if (rule.filenameFromRegexp) {
118-
var re = new RegExp(rule.filenameFromRegexp);
119-
match = (attachment.getName()).match(re);
120-
}
121-
if (!match) {
122-
Logger.log("INFO: Rejecting file '" + attachment.getName() + " not matching" + rule.filenameFromRegexp);
123-
continue;
124-
}
125-
try {
126-
var folder = getOrCreateFolder(Utilities.formatDate(messageDate, config.timezone, rule.folder));
127-
var file = folder.createFile(attachment);
128-
if (rule.filenameFrom && rule.filenameTo && rule.filenameFrom == file.getName()) {
129-
var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
130-
Logger.log("INFO: Renaming matched file '" + file.getName() + "' -> '" + newFilename + "'");
131-
file.setName(newFilename);
132-
}
133-
else if (rule.filenameTo) {
134-
var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
135-
Logger.log("INFO: Renaming '" + file.getName() + "' -> '" + newFilename + "'");
136-
file.setName(newFilename);
137-
}
138-
file.setDescription("Mail title: " + message.getSubject() + "\nMail date: " + message.getDate() + "\nMail link: https://mail.google.com/mail/u/0/#inbox/" + message.getId());
139-
Utilities.sleep(config.sleepTime);
140-
} catch (e) {
141-
Logger.log(e);
142-
}
143-
}
150+
processMessage(message, rule, config);
144151
}
145152
thread.addLabel(label);
146153
if (doArchive) {

0 commit comments

Comments
 (0)