This Google Apps Script will automatically save Gmail attachments to Google Drive. It also has a premium version that supports nested Gmail labels, it can monitor multiple Gmail label and saves attachments in logical Google Drive folders.
function sendToGoogleDrive() { var sheet = SpreadsheetApp.getActiveSheet(); var gmailLabels = sheet.getRange("D4:D4").getValue(); var driveFolder = sheet.getRange("D5:D5").getValue(); var archiveLabel = sheet.getRange("D6:D6").getValue(); var moveToLabel = GmailApp.getUserLabelByName(archiveLabel); if ( ! moveToLabel ) { moveToLabel = GmailApp.createLabel(archiveLabel); } var filter = "has:attachment -label:" + archiveLabel + " label:" + gmailLabels; var threads = GmailApp.search(filter, 0, 5); var folder = DriveApp.getFoldersByName(driveFolder); if (folder.hasNext()) { folder = folder.next(); } else { folder = DriveApp.createFolder(driveFolder); } for (var x=0; x<threads.length; x++) { 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); } } function configure() { reset(); ScriptApp.newTrigger("sendToGoogleDrive").timeBased().everyMinutes(5).create(); Browser.msgBox("Initialized", "The program is now running.", Browser.Buttons.OK); } function onOpen() { var menu = [ { name: "Step 1: Authorize", functionName: "configure" }, { name: "Step 2: Run Program", functionName: "configure" }, { name: "Uninstall (Stop)", functionName: "reset" } ]; SpreadsheetApp.getActiveSpreadsheet() .addMenu("Gmail Attachments", menu); } function reset() { var triggers = ScriptApp.getProjectTriggers(); for (var i = 0; i < triggers.length; i++) { ScriptApp.deleteTrigger(triggers[i]); } }