Использование VBA в Outlook для очистки строки темы и создания / исполнения URL - PullRequest
1 голос
/ 04 октября 2019

У нас есть внутренний веб-сайт, который создает пакеты MSI с помощью запросов JIRA, веб-сайт принимает переменные GET через URL-адрес. Что я пытаюсь сделать для каждого письма, которое приходит с такой темой, как:

JIRA: (V-1244) TEST: Automatic Tool Builder

Я хотел бы почистить цифры после "V-" и вставить егопо этой ссылке:

https://test.tool/gen.php?v=1244&submitV=Submit

после того, как ссылка сгенерирована. Я хочу, чтобы она запустила URL в браузере. Это даже возможно, так как я новичок в VBA и просто ищу направление для начала. Я искал хотя бы тонны страниц, но не нашел ничего такого, что нужно.

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Работа с Regex

Пример

\((.*)\)

https://regex101.com/r/b6VPxR/1

enter image description here

VBA https://stackoverflow.com/a/39588282/4539709

0 голосов
/ 04 октября 2019

Немного покопавшись, я наконец-то понял! Этот код устанавливает слушателя при запуске приложения, затем любое электронное письмо проверяет где-либо в теме «JIRA», поскольку строка темы всегда статична, меняются только 4 числа. Я разбиваю тему на массив, используя * 1001. *. Затем я запрашиваю массив для нужной мне части темы и использую MID(), чтобы просто извлечь идентификатор, который мне нужен для URL. Когда URL завершен, я объединяю части URL в одну переменную, которая выводит полный URL, который мне нужно выполнить. Оттуда я запускаю и запускаю браузер, используя CreateObject("Shell.Application"), и это работает: D! Здесь необходимо упомянуть, что для того, чтобы это работало, сценарий должен быть помещен в ThisOutlookSession в Microsoft Visual Basic для приложений Project, когда вы нажимаете ALT + F11 в Outlook и после сохранения сценария, вы должны перезапустить Outlook. для его загрузки. Вам также нужно перейти в Центр управления безопасностью, который находится в разделе ФАЙЛ -> Параметры -> Центр управления безопасностью, нажать кнопку Настройки центра управления безопасностью и в этом меню выбрать «Параметры макроса» и установить для параметра «Уведомления для всех макросов» таким образом, чтоуведомить вас о включении макросов при запуске outlook. Цитируемые строки кода: 1. msgbox, который я использовал, чтобы показать мне вывод моих переменных, и 2. в самом конце другие элементы, которые я могу запросить из самого письма. Я оставил их там, чтобы, возможно, помочь другим, если они пытаются запросить другие части входящего письма.

Option Explicit
Private WithEvents inboxItems As Outlook.Items

Private Sub Application_Startup()
  Dim outlookApp As Outlook.Application
  Dim objectNS As Outlook.NameSpace

  Set outlookApp = Outlook.Application
  Set objectNS = outlookApp.GetNamespace("MAPI")
  Set inboxItems = objectNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub inboxItems_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler

Dim Msg As Outlook.MailItem
Dim MessageInfo
Dim Result
Dim vID
Dim vURL1
Dim vURL2
Dim vURL3
Dim fullVID
Dim fullVURL


If TypeName(Item) = "MailItem" And InStr(1, Item.Subject, "JIRA") > 0 Then
Dim s As String: s = Item.Subject

fullVID = Split(s, " ")(2)
vID = Mid(fullVID, 7, 4)
vURL1 = "https://test.tool/gen.php?v="
vURL2 = vID
vURL3 = "&submitV=Submit"
fullVURL = vURL1 & vURL2 & vURL3


    MessageInfo = "" & _
        "Subject : " & Item.Subject & vbCrLf & _
        "Variable 1 : " & Split(s, " ")(0) & vbCrLf & _
        "JIRA V : " & vID & vbCrLf & _
        "Create V URL : " & fullVURL

    'Result = MsgBox(MessageInfo, vbOKOnly, "New JIRA Ticket Received")

Dim build
Set build = CreateObject("Shell.Application")
build.ShellExecute "Chrome.exe", fullVURL, "", "", 1

End If

ExitNewItem:
    Exit Sub

ErrorHandler:
    MsgBox Err.Number & " - " & Err.Description
    Resume ExitNewItem
End Sub

'"Message Body : " & vbCrLf & Item.Body
'"Sender : " & Item.SenderEmailAddress & vbCrLf & _
'"Sent : " & Item.SentOn & vbCrLf & _
'"Received : " & Item.ReceivedTime & vbCrLf & _
'"Size : " & Item.Size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...