TheSlinger
Expert Member
- Joined
- Jun 6, 2014
- Messages
- 1,069
- Reaction score
- 174
Anyone have google script experience?
I am encountering a problem, where if the same email address sends another email the script uploads the attachment from the one email and not the rest (repeatedly). Even after the email has had it's label changed (in the script) it still continues to upload only that attachment and not any future ones...
My code is as follows:
I am encountering a problem, where if the same email address sends another email the script uploads the attachment from the one email and not the rest (repeatedly). Even after the email has had it's label changed (in the script) it still continues to upload only that attachment and not any future ones...
My code is as follows:
Code:
function startProcess()
{
var gmailLabels = "newLabel";
var driveFolder = "newFolder"";
var archiveLabel = "Processed";
var moveToLabel = GmailApp.getUserLabelByName(archiveLabel);
if ( ! moveToLabel )
{
moveToLabel = GmailApp.createLabel(archiveLabel);
}
findFolder(gmailLabels, driveFolder, archiveLabel, moveToLabel);
}
function findFolder(gmailLabels, driveFolder, archiveLabel, moveToLabel)
{
var filter = "has:attachment label:" + gmailLabels;
var folder = DriveApp.getFoldersByName(driveFolder);
if (folder.hasNext()) {
folder = folder.next();
} else {
folder = DriveApp.createFolder(driveFolder);
}
callThreads(gmailLabels, driveFolder, archiveLabel, moveToLabel, filter, folder)
}
function callThreads(gmailLabels, driveFolder, archiveLabel, moveToLabel, filter, folder)
{
var threads = GmailApp.search(filter, 0, 5);
for (var x=0; x<threads.length; x++) {
var label = GmailApp.getUserLabelByName(gmailLabels);
var message = threads[x].getMessages()[0];
var desc = message.getSubject() + " #" + message.getId();
var att = message.getAttachments();
for (var z=0; z<att.length; z++) {
try {
file = folder.createFile(att[z]);
file.setDescription(desc);
}
catch (e) {
Logger.log(e.toString());
}
}
threads[x].addLabel(moveToLabel);
label.removeFromThreads(threads);
threads[x].moveToTrash();
}
}
function configure() {
reset();
ScriptApp.newTrigger("startProcess").timeBased().everyMinutes(1).create();
}
function reset() {
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}
}