Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var GMAIL_LABEL = 'Maslov_status_sdelok_Taganrog';
- var GDRIVE_FILE = 'Maslov/ssta.xlsx';
- function main() {
- var label = GmailApp.getUserLabelByName(GMAIL_LABEL);
- var threads = getUnprocessedThreads(label);
- for(j=0; j<threads.length; j++) {
- processThread(threads[j], label);
- convert();
- replace_to_ob();
- }
- }
- function getOrMakeFolder(path) {
- var folder = DriveApp.getRootFolder();
- var names = path.split('/');
- while(names.length) {
- var name = names.shift();
- if(name === '') continue;
- var folders = folder.getFoldersByName(name);
- if(folders.hasNext()) {
- folder = folders.next();
- } else {
- folder = folder.createFolder(name);
- }
- }
- return folder;
- }
- function getUnprocessedThreads(label) {
- var from = 0;
- var perrun = 100; //maximum is 500
- var threads;
- var result = [];
- do {
- threads = label.getThreads(from, perrun);
- from += perrun;
- for(var i=0; i<threads.length; i++) {
- if(threads[i].hasStarredMessages()) continue;
- result.push(threads[i]);
- }
- } while (threads.length === perrun);
- return result;
- }
- function getExtension(name) {
- var re = /(?:\.([^.]+))?$/;
- return re.exec(name)[1].toLowerCase();
- }
- function createFilename(filename, info) {
- var keys = Object.keys(info);
- keys.sort(function(a,b) {
- return b.length - a.length;
- });
- for(var i=0; i<keys.length; i++) {
- filename = filename.replace(new RegExp('\\$'+keys[i], 'g'), info[keys[i]]);
- }
- return filename;
- }
- function saveAttachment(attachment, path) {
- var parts = path.split('/');
- var file = parts.pop();
- var path = parts.join('/');
- var folder = getOrMakeFolder(path);
- var check = folder.getFilesByName(file);
- folder.createFile(attachment).setName(file);
- }
- function processThread(thread, label) {
- var messages = thread.getMessages();
- for(var j=0; j<messages.length; j++) {
- var message = messages[j];
- if(message.isStarred()) continue;
- var attachments = message.getAttachments();
- for(var i=0; i<attachments.length; i++) {
- var attachment = attachments[i];
- var info = {
- 'name': attachment.getName(),
- 'ext': getExtension(attachment.getName()),
- 'domain': message.getFrom().split('@')[1].replace(/[^a-zA-Z]+$/,''), // domain part of email
- 'sublabel': label.getName().substr(GMAIL_LABEL.length+1),
- 'y': ('0000' + (message.getDate().getFullYear())).slice(-4),
- 'm': ('00' + (message.getDate().getMonth()+1)).slice(-2),
- 'd': ('00' + (message.getDate().getDate())).slice(-2),
- 'h': ('00' + (message.getDate().getHours())).slice(-2),
- 'i': ('00' + (message.getDate().getMinutes())).slice(-2),
- 's': ('00' + (message.getDate().getSeconds())).slice(-2),
- 'mc': j,
- 'ac': i,
- }
- var file = createFilename(GDRIVE_FILE, info);
- saveAttachment(attachment, file);
- GmailApp.moveMessageToTrash(message);
- }
- }
- }
- function convert() {
- var files = DriveApp.searchFiles('title contains "ssta"');
- while (files.hasNext()) {
- var source = files.next();
- var sourceId = source.getId();
- var fileName = source.getName().replace('.xlsx', '');
- var file = {
- title: fileName,
- };
- file = Drive.Files.copy(file, sourceId, {convert: true});
- file = Drive.Files.trash(sourceId);
- }
- }
- function replace_to_ob(){
- var files_ob = DriveApp.searchFiles('title contains "Obed"');
- var ss_ob = SpreadsheetApp.open(files_ob.next());
- var sheets_ob = ss_ob.getSheets();
- var files = DriveApp.searchFiles('title contains "ssta"');
- while (files.hasNext()) {
- var ss = SpreadsheetApp.open(files.next());
- var sheets = ss.getSheets();
- for(var i = 0; i < sheets.length; i++){
- var range = sheets[i].getRange(1, 1, sheets[i].getLastRow(), sheets[i].getLastColumn());
- sheets_ob[2].clear();
- var range_ob = sheets_ob[2].getRange(1, 1, sheets[i].getLastRow(), sheets[i].getLastColumn());
- var values = range.getValues();
- range_ob.setValues(values);
- }
- }
- remove();
- }
- function remove(){
- var files = DriveApp.searchFiles('title = "ssta"');
- while (files.hasNext()) {
- var file = files.next();
- file.setTrashed(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement