Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (31)
  • Как вытащить адрес почты из тела письма и отправить на него стандартный ответ?

    Amunrah
    @Amunrah Автор вопроса
    Сказочный персонаж ))
    Короче решил вопрос. Оставлю тут, вдруг кому пригодится.

    В общем сделал табличку с двумя одинаковыми листами (Новые и Обработанные) вида:
    61154258cbce4938784054.png

    И написал следующий код:
    var name, email, phone;
    name = email = phone = 'None';
    
    function getEmails(){
      var threads = GmailApp.search('label:Заявка');
    
      if (threads.length) {
        for (var i=0; i < threads.length; i++) {
          var messages = threads[i].getMessages();
          for (var j=0; j < messages.length; j++) {
            var message = messages[j];
            message.markRead(); 
            extractDetails(message);
          }
          getSheetData();
          threads[i].removeLabel(GmailApp.getUserLabelByName("Заявка"));
          threads[i].addLabel(GmailApp.getUserLabelByName("Обработано"));
        }    
      } else {}
    }
    
    function extractDetails(message){
      var dateTime = message.getDate();
      searchInBody(message.getPlainBody());
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      var activeSheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName("Новые"));
      activeSheet.appendRow([dateTime, name, email, phone]);
    }
    
    function searchInBody(mes) {
      var lines, subline;
      lines = mes.split("\n");
    
      for (index = 0; index < lines.length; ++index) {
        if(lines[index].indexOf('Name:') + 1) {
          subline = lines[index].split(":");
          name = subline[1].toString().trim();
        }
        if(lines[index].indexOf('Email:') + 1) {
          subline = lines[index].split(":");
          email = subline[1].toString().trim();  
        }
        if(lines[index].indexOf('Phone:') + 1) {
          subline = lines[index].split(":");
          phone = subline[1].toString().trim().slice(1,);
        }
      }
    }
    
    function getSheetData() {
      var re = /\S+@\S+\.\S+/;
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName("Новые"));
      var data = sheet.getRange('A2:F').getValues();
      sheet.getRange('A2:F').clearContent();
      
      data.forEach(row => {
        if (row[2] !== '' && re.test(row[2])) {
          sendMail();
        } else {}
      })
    
      var sheet1 = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName("Обработанные"));
      var row = data.length;
      var column = data[0].length;
      sheet1.getRange(sheet1.getLastRow()+1, 1, row, column).setValues(data);
    }
    
    function sendMail() {
      var html = 'Здравствуйте '+name+'!<br><br>Ваша заявка принята, наш специалист скоро свяжется с вами.<br><br>Спасибо за обращение.';  
      var recipientsTO = email;
      var recipientsCC = email;
      var Subject = "Ваша заявка принята";
      
      MailApp.sendEmail({
        to: recipientsTO,
        cc: recipientsCC,
        subject: Subject,
        htmlBody: html
      });
    }

    Дал ему нужные разрешения и поставил расписание. Код сыроват и далековат от оптимального, но пока все работает.
    Ответ написан
    Комментировать
  • Как активировать новый стиль ST4?

    Amunrah
    @Amunrah
    Сказочный персонаж ))
    Сначала надо задать адаптивную тему: Preferences → Select Theme... → Adaptive.sublime-theme
    Потом выбрать цветовую схему по вкусу: Preferences → Select Color Scheme...
    Дополнительные темы можно посмотреть - тут. Там же, через поиск, можно и цветовые схемы поискать, но обычно они в комплекте с темами идут.
    Чтобы скрыть главное меню: View → Hide Menu (потом оно по нажатию alt появляется).
    Кстати, в зависмости от выбранной цветовой схемы, главное меню может сворачиваться в иконку (выпадающий список).

    61dcc6b3bc49d543798060.png
    Ответ написан
    Комментировать
  • Как настроить автосохранение и синхронизацию настроек и пакетов в Sublime Text?

    Amunrah
    @Amunrah
    Сказочный персонаж ))
    Можно например с помощью PackageSync. Хотя сам не юзал. Мне было достаточно Sync Settings - архивация настроек через gist'ы. Просто и удобно.
    Ответ написан
    Комментировать
  • Как в Sublime Text 3 ставить длинное тире и книжные кавычки?

    Amunrah
    @Amunrah
    Сказочный персонаж ))
    Заходишь в настройки саблайма и открываешь привязки клавиш. Preferences → Key Bindings. Откроется окно разделенное на две части, в левой - хоткеи по умолчанию, в правой - пользовательские. Соответственно в правую часть нужно вставить следующую запись:
    {"keys": ["alt+shift+-"], "command": "insert_snippet", "args": {"contents": "–"}}

    И сохранить, например нажав ctrl+s, после чего окно хоткеев можно закрывать, а длинное тире будет вставляться по нажатию alt+shift+-
    Ответ написан
    4 комментария
  • Что делать если не работает input в Sublime Text 3 (Python 3)?

    Amunrah
    @Amunrah
    Сказочный персонаж ))
    У саблайма, на сколько я знаю, есть такой косяк - встроенный билдер не умеет работать интерактивно. Нижняя панелька лишь отображает вЫвод, но не отправляет ввод обратно в исполняемый код. Поэтому запущенная программа будет тупо висеть фоном в ожидании данных... Вроде есть варианты решения, но лучше использовать сторонние пакеты, например SublimeREPL или Terminus (который, кстати, намного удобнее - он добавляет в саблайм полноценный командный терминал, однако нужно вникать чтоб настроить)

    5e6f2e90897b6790097579.png
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (10)