2

Я хочу автоматически удалять повторяющиеся сообщения в полученных сообщениях.

Например, всякий раз, когда я обмениваюсь электронной почтой с одним человеком в моей компании, я хотел бы иметь возможность отфильтровать беседу от бесполезного, повторяющегося контента, такого как подписи и заголовки (От :, Дата :, CC :, Тема: ...),

У меня нет опыта работы с Macros/VBA, и я не смог найти никаких подсказок в книгах по Outlook/VB, к которым у меня был доступ. У меня есть некоторый опыт работы с Python, но он очень простой (я проходил курс Learn Python The Hard Way).

1 ответ1

0

Этот ответ (поистине ваш) дает графическое пошаговое руководство по настройке правила и программированию макроса, который изменяет входящие электронные письма по мере их поступления для некоторой обработки тела.

Вам просто нужно адаптировать код для выполнения обработки, чтобы удалить "повторяющийся контент", который вы не хотите видеть.

Общая проблема удаления повторяющегося контента на самом деле довольно сложна в вычислительном отношении.

Предполагая, что "повторяющаяся строка" является подстрокой, которая уже произошла в тексте, у вас будет такая структура цикла (псевдокод, не пытайтесь скопировать это в программу):

For i = 1 To Len(str)
    For j = i To Len(str)
        needle = substring(str, i, j)
        nlen = Len(needle)
        For k = 1 To Len(str)
            match = substring(str, k, k + nlen)
            If needle = match Then
                '...do stuff
            End If
        Next
    Next
Next

Звучит довольно сложно. Кроме того, этот вид цикла будет перехватывать такие вещи, как "Pettitte" (фамилия) и изменять его на "Peti" (остальные символы - это подстроки длины 1, которые уже произошли). Вы должны были бы установить минимальную длину для "иглы", чтобы избежать не более одного экземпляра каждой буквы алфавита. Затем вам нужно будет выполнить некоторый анализ строки, чтобы определить, является ли это "текстом заголовка" или чем-то, что вы хотите удалить. В противном случае, он поймал бы что-то вроде: Я действительно настоятельно советую вам не делать этого ". И поменять его на" вы не должны этого делать. Я действительно, настоятельно советую вам

Если вы не хотите использовать универсальный (наивный) способ поиска дублированного контента, который может удалить много значимого контента, вам придется решить:

  • Какие подстроки пытаться обнаружить дубликаты;
  • Какие экземпляры дубликатов оставить, а какие удалить.

Функции InStr и Mid в VBA должны быть полезны. Нажмите F2 на клавиатуре в редакторе VBA, чтобы увидеть список доступных функций в различных модулях. Встроенные строковые функции в модуле VBA должны оказаться полезными.

Я не думаю, что что-то подобное уже существует в предварительно сохраненном формате, который вы можете просто взять и использовать, но если все, что вы хотите удалить, это избыточные почтовые заголовки, такие как From:, To:, Subject:, это должно быть довольно легко обнаружить их, используя несколько подстрок или совпадений регулярных выражений. Если вы действительно застряли в недрах кода, я думаю, что вопрос StackOverflow будет более уместным в качестве продолжения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .