Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let sheetSettingsName = 'Настройки';
- let sheetOrderName = 'Отчет по выгрузке';
- let folder;
- let folderId;
- function getMails(today = 0) {
- let SS = SpreadsheetApp.getActiveSpreadsheet();
- let optionsSheet = SS.getSheetByName(sheetSettingsName);
- let config = optionsSheet.getRange("B1:D3").getValues();
- let [motherFolderName, from, subject, before, after] = [config[0][0], config[1][0], config[2][0],
- today ? new Date() : config[0][2],
- today ? new Date(new Date().getTime()+1000*60*60*24) :config[1][2]];
- let query = q(before, after, from, subject);
- Logger.log(query);
- let threads = GmailApp.search(query);
- Logger.log(threads);
- threads.map(t => t.getMessages()
- .forEach(mail => {
- let label = t.getFirstMessageSubject();
- let date = mail.getDate();
- let fromWho = mail.getFrom();
- let files = mail.getAttachments();
- let text = mail.getPlainBody().replace(/\n/g, ' ');
- if (files.length) {
- if (!folder) {
- folder = getFolder(before, after, motherFolderName, from, subject);
- folderId = folder.getId();
- }
- files.forEach(file => copyFileToFolder(date, file, folder, folderId, label, fromWho, text));
- } else {
- saveDataToSheet(date, label, '', fromWho, text, '')
- }
- })
- );
- }
- function getMailsToday() {
- getMails(1);
- }
- function q(after, before, from, subj) {
- from = from ? `from:{${from}}` : '';
- subj = subj ? `subject:${subj}` : '';
- after = after ? `after:${d2s(after)}` : '';
- before = before ? `before:${d2s(before)}` : '';
- return `in:inbox ${[after, before, subj, from].join(' ')}`;
- }
- function d2s(date, f = 'yyyy/MM/dd') {
- return date ? Utilities.formatDate(date, Session.getScriptTimeZone(), f) : ' . ';
- }
- function getFolder(before, after, motherFolderName, from, subj) {
- let motherFolder = DriveApp.getFoldersByName(motherFolderName);
- motherFolder = motherFolder.hasNext() ? motherFolder.next() : DriveApp.createFolder(motherFolderName);
- let folderName =
- `${before ? d2s(before , 'dd.MM') : 'all'} – ${after ? d2s(after, 'dd.MM') : 'all'}${from ? ', from: ' + from : ''}${subj ? ', subj: ' + subj: ''}`;
- let workFolder = motherFolder.getFoldersByName(folderName);
- return workFolder.hasNext() ? workFolder.next() : motherFolder.createFolder(folderName);
- }
- function copyFileToFolder(date, file, folder, folderId, label, fromWho, text) {
- let fileName = file.getName();
- let id = folder.createFile(file).getId();
- saveDataToSheet(date, label, fileName, fromWho, text, folderId, id);
- }
- function saveDataToSheet(date, label, fileName, fromWho, text, folderId, id) {
- data = [
- date,
- label,
- fromWho,
- text,
- fileName ? fileName : '',
- id ? 'https://drive.google.com/file/d/' + id : '',
- folderId ? 'https://drive.google.com/drive/folders/' + folderId : ''
- ]
- let sheetOrder = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetOrderName);
- sheetOrder.appendRow(data);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement