Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Проверить существует ли уже такой проект
- function projectExists(projectname) {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var result = ss.getSheetByName(projectname);
- if ( result == null ) {
- return false;
- } else {
- return true;
- }
- }
- // Создать лист для нового проекта
- function createNewProject(projectname) {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- if ( !projectExists(projectname) ) {
- var newsheet = ss.insertSheet(projectname);
- setTableHeader(newsheet);
- return newsheet;
- }
- }
- // Задать шапку таблицы в листе нового проекта
- function setTableHeader(sheet) {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var sheet = ss.setActiveSheet(sheet);
- var fields = [];
- fields[1] = 'Дата';
- fields[2] = 'Время';
- fields[3] = 'typ';
- fields[4] = 'src';
- fields[5] = 'mdm';
- fields[6] = 'cmp';
- fields[7] = 'cnt';
- fields[8] = 'trm';
- fields[9] = 'Тема сообщения';
- fields[10] = 'Имя';
- fields[11] = 'Email';
- fields[12] = 'Телефон';
- fields[13] = 'Сообщение';
- fields[14] = 'Примечания';
- for ( var i = 1; i < fields.length; i++ ) {
- var cell = sheet.getRange(1,i);
- cell.setValue(fields[i]);
- cell.setBackground('#ddd');
- }
- sheet.setFrozenRows(1);
- }
- // Проверить есть на цепочке сообщений заданная метка
- function labelExists(label, thread) {
- var labels = thread.getLabels();
- for (var i = 0; i < labels.length; i++) {
- var labelname = labels[i].getName();
- if ( labelname == label ) {
- return true;
- } else {
- continue;
- }
- }
- return false;
- }
- // Вставить новую строку данных
- function appendRow(dataobj, sheet) {
- var indexes = [
- 'date',
- 'time',
- 'typ',
- 'src',
- 'mdm',
- 'cmp',
- 'cnt',
- 'trm',
- 'subject',
- 'name',
- 'email',
- 'phone',
- 'message',
- 'prim'
- ];
- var row = [];
- for ( var i = 0; i < indexes.length; i++ ) {
- if ( dataobj[indexes[i]] != undefined ) {
- row[i] = dataobj[indexes[i]];
- } else {
- row[i] = '';
- }
- }
- row[11] = row[11].replace('+', ''); // Удалить знак "+" в телефонном номере
- row[12] = row[12].replace(/<\/?[^>]+>/gi, ''); // Удалить теги в сообщении
- sheet.appendRow(row);
- }
- // Обработка сообщений
- function processMessages() {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var threads = GmailApp.getInboxThreads(0,5);
- for (var i = 0; i < threads.length; i++) { // Выбрать все цепочки сообщений
- var messages = GmailApp.getMessagesForThread(threads[i]);
- for (var n = 0 ; n < messages.length; n++) { // Выбрать все сообщения из цепочки
- var message = messages[n];
- if ( message.isStarred() == false ) {
- var content = message.getRawContent(); // Контет сообщения
- var datastring = content.match(/{([^}].*)}/g); // Получить строку с данными
- if ( datastring != null ) { // Обрабатываем, если строка с данными есть
- var dataobj = JSON.parse(datastring[0]);
- var from = message.getFrom(); // Поле "From"
- var projectname = from.match(/"(.*?)"/); // Фильтруем имя отправителя, это и есть название проекта
- projectname = projectname[1];
- if ( projectExists(projectname) ) { // Если такой проект есть...
- var sheet = ss.setActiveSheet(ss.getSheetByName(projectname)); // переходим на лист проекта
- } else { // Если такого нет...
- var sheet = createNewProject(projectname); // создаем новый лист проекта
- }
- // Вставляем строку в таблицу
- appendRow(dataobj, sheet);
- // Метим звездочкой как обработанное
- message.star();
- }
- }
- }
- }
- }
- // Функция для ручной обработки писем отдельного проекта
- function processByProject(){
- var domain = 'moleskineria.ru';
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var threads = GmailApp.search('from:'+domain);
- for (var i = 0; i < threads.length; i++) { // Выбрать все цепочки сообщений
- var messages = GmailApp.getMessagesForThread(threads[i]);
- for (var n = 0 ; n < messages.length; n++) { // Выбрать все сообщения из цепочки
- var message = messages[n];
- if ( message.isStarred() == false ) {
- var content = message.getRawContent(); // Контет сообщения
- var datastring = content.match(/{([^}].*)}/g); // Получить строку с данными
- if ( datastring != null ) { // Обрабатываем, если строка с данными есть
- var dataobj = JSON.parse(datastring[0]);
- var from = message.getFrom(); // Поле "From"
- var projectname = from.match(/"(.*?)"/); // Фильтруем имя отправителя, это и есть название проекта
- projectname = projectname[1];
- if ( projectExists(projectname) ) { // Если такой проект есть...
- var sheet = ss.setActiveSheet(ss.getSheetByName(projectname)); // переходим на лист проекта
- } else { // Если такого нет...
- var sheet = createNewProject(projectname); // создаем новый лист проекта
- }
- // Вставляем строку в таблицу
- appendRow(dataobj, sheet);
- // Метим звездочкой как обработанное
- message.star();
- }
- }
- }
- }
- }
- // Запуск
- function onOpen() {
- processMessages();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement