mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			151 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| The MIT License (MIT)
 | |
| 
 | |
| Copyright (c) 2014 Thiago Brandão Damasceno
 | |
| 
 | |
| Permission is hereby granted, free of charge, to any person obtaining a copy
 | |
| of this software and associated documentation files (the "Software"), to deal
 | |
| in the Software without restriction, including without limitation the rights
 | |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | |
| copies of the Software, and to permit persons to whom the Software is
 | |
| furnished to do so, subject to the following conditions:
 | |
| 
 | |
| The above copyright notice and this permission notice shall be included in all
 | |
| copies or substantial portions of the Software.
 | |
| 
 | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | |
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
| SOFTWARE.
 | |
| */
 | |
| 
 | |
| // based on http://ctrlq.org/code/19053-send-to-google-drive
 | |
| function sendToGoogleDrive() {
 | |
| 
 | |
|   var gmailLabels           = 'inbox';
 | |
|   var driveFolder           = 'Itaú Notifications';
 | |
|   var spreadsheetName       = 'itau';
 | |
|   var archiveLabel          = 'itau.processed';
 | |
|   var itauNotificationEmail = 'comunicacaodigital@itau-unibanco.com.br';
 | |
|   var filter                = "from: " +
 | |
|                               itauNotificationEmail +
 | |
|                               " -label:" +
 | |
|                               archiveLabel +
 | |
|                               " label:" +
 | |
|                               gmailLabels;
 | |
| 
 | |
|   // Create label for 'itau.processed' if it doesn't exist
 | |
|   var moveToLabel =  GmailApp.getUserLabelByName(archiveLabel);
 | |
| 
 | |
|   if (!moveToLabel) {
 | |
|     moveToLabel = GmailApp.createLabel(archiveLabel);
 | |
|   }
 | |
| 
 | |
|   // Create folder 'Itaú Notifications' if it doesn't exist
 | |
|   var folders = DriveApp.getFoldersByName(driveFolder);
 | |
|   var folder;
 | |
| 
 | |
|   if (folders.hasNext()) {
 | |
|     folder = folders.next();
 | |
|   } else {
 | |
|     folder = DriveApp.createFolder(driveFolder);
 | |
|   }
 | |
| 
 | |
|   // Create spreadsheet file 'itau' if it doesn't exist
 | |
|   var files = folder.getFilesByName(spreadsheetName);
 | |
| 
 | |
|   // File is in DriveApp
 | |
|   // Doc is in SpreadsheetApp
 | |
|   // They are not interchangeable
 | |
|   var file, doc;
 | |
| 
 | |
|   // Confusing :\
 | |
|   // As per: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3578
 | |
|   if (files.hasNext()){
 | |
|     file = files.next();
 | |
|     doc = SpreadsheetApp.openById(file.getId());
 | |
|   } else {
 | |
|     doc = SpreadsheetApp.create(spreadsheetName);
 | |
|     file = DriveApp.getFileById(doc.getId());
 | |
|     folder.addFile(file);
 | |
|     DriveApp.removeFile(file);
 | |
|   }
 | |
| 
 | |
|   var sheet = doc.getSheets()[0];
 | |
| 
 | |
|   // Append header if first line
 | |
|   if(sheet.getLastRow() == 0){
 | |
|     sheet.appendRow(['Conta', 'Operação', 'Valor', 'Data', 'Hora', 'Email ID']);
 | |
|   }
 | |
| 
 | |
|   var message, messages, account, operation, value, date, hour, emailID, plainBody;
 | |
|   var accountRegex = /Conta: (XXX[0-9\-]+)/;
 | |
|   var operationRegex = /Tipo de operação: ([A-Z]+)/;
 | |
|   var paymentRegex = /Pagamento de ([0-9A-Za-z\-]+)\ ?([0-9]+)?/;
 | |
|   var valueRegex = /Valor: R\$ ([0-9\,\.]+)/;
 | |
|   var dateRegex = /Data: ([0-9\/]+)/;
 | |
|   var hourRegex = /Hora: ([0-9\:]+)/;
 | |
|   var emailIDRegex = /E-mail nº ([0-9]+)/;
 | |
| 
 | |
|   var threads = GmailApp.search(filter, 0, 100);
 | |
| 
 | |
|   for (var x = 0; x < threads.length; x++) {
 | |
|     messages = threads[x].getMessages();
 | |
| 
 | |
|     for (var i = 0; i < messages.length; i++) {
 | |
|       account, operation, value, date, hour, emailID = [];
 | |
| 
 | |
|       message = messages[i];
 | |
| 
 | |
|       plainBody = message.getPlainBody();
 | |
| 
 | |
|       if(accountRegex.test(plainBody)) {
 | |
|         account = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(operationRegex.test(plainBody)) {
 | |
|         operation = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(valueRegex.test(plainBody)) {
 | |
|         value = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(dateRegex.test(plainBody)) {
 | |
|         date = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(hourRegex.test(plainBody)) {
 | |
|         hour = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(emailIDRegex.test(plainBody)){
 | |
|         emailID = RegExp.$1;
 | |
|       }
 | |
| 
 | |
|       if(paymentRegex.test(plainBody)){
 | |
|         operation = RegExp.$1;
 | |
|         if(RegExp.$2){
 | |
|           operation += ' ' + RegExp.$2
 | |
|         }
 | |
|         date = hour = ' - ';
 | |
|       }
 | |
| 
 | |
|       if(account && operation && value && date && hour){
 | |
|         sheet.appendRow([account, operation, value, date, hour, emailID]);
 | |
|       }
 | |
| 
 | |
|       // Logger.log(account);
 | |
|       // Logger.log(operation);
 | |
|       // Logger.log(value);
 | |
|       // Logger.log(date);
 | |
|       // Logger.log(hour);
 | |
|     }
 | |
| 
 | |
|     threads[x].addLabel(moveToLabel);
 | |
|   }
 | |
| }
 |