cancel
Showing results for 
Search instead for 
Did you mean: 
TakashiSatoh
Level 4
Status: New
日本語後述 ☺
Need your idea and insight to generate meeting invitations for specific group or person.  There is no need to check available time slot, just sending invitations at certain time slots.
I believe it can be done by comprehensive windows spy mode, but Is there any VBO or ready solution available?
--------------------------------
Blue Prism から所定のユーザーあるいはグループに対してミーティング招集を行う簡便な方法があるでしょうか?受信者側の空き状況を勘案する必要はなく、所定の時間で一方的に送り付けるだけで構いません。
アウトルック自体を Windows アプリケーションとしてスパイして実行させれば可能かとは思いますが、Mail のような VBO で処理できないかな、という意図です。
6 Comments
NareshShanigara
Level 3
Hi Satoh,
I had the similar requirement to create the invites and sent to the meeting participants. I used the ICS (.ics) file concept to achieve it in outlook. ICS file is text file with all the required details of the meeting. Outlook application can understands the .ics file and opens it in outlook meeting window. I had created custom vbo with code stage in C# to create the .ics text file. But it would be better if there is an out of box solution in existing outlook VBO from Blue prism.
TakashiSatoh
Level 4
Hi Naresh-san

Thank you for your feedback and I will ask my developer to make it happen.
Can I assume that BluePrism will send email to the participants with ICS attachment, or send comprehensive ​outlook meeting invitation directly?
NareshShanigara
Level 3
Hi Satoh,
ICS file will be sent as an attachment to meeting participants.  When the participant open the ics file attachment, it will be opened in outlook meeting window.
FaiyazBOT_Build
Level 3
Hi Naresh,

Good Day!
Hope you are doing well 

Thanks your for the comments and if I May, Can I ask for the the Code which you have created for this .ics text file. It would so much helpful if you share. 

Thanks in Advance
NareshShanigara
Level 3
Hi Faiyaz,
Sorry for delayed response, Please find the details in the following links for generating the ics file through code stage in blue prism.

https://www.webdavsystem.com/server/creating_caldav_carddav/calendar_ics_file_structure/

https://www.codeproject.com/Questions/827812/sending-ICS-files-as-an-attachment-using-Csharp
NareshShanigara
Level 3
Try
            If System.IO.File.Exists(ICSFileFullPath) Then
                Throw New System.Exception("ICS file already exists in given path: " & ICSFileFullPath)
            End If

            Dim SBuilder2 As New System.Text.StringBuilder()
            SBuilder2.AppendLine("BEGIN:VCALENDAR")
            SBuilder2.AppendLine("PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN")
            SBuilder2.AppendLine("VERSION:2.0")
            SBuilder2.AppendLine("METHOD:PUBLISH")
            SBuilder2.AppendLine("X-MS-OLK-FORCEINSPECTOROPEN:TRUE")
            ''Timezone Details
            SBuilder2.AppendLine("BEGIN:VTIMEZONE")
            Dim TZID As String
            If TimeZone = "EST" Then
                TZID = "Eastern Standard Time"
                SBuilder2.AppendLine("TZID:Eastern Standard Time")
                SBuilder2.AppendLine("BEGIN:STANDARD")
                SBuilder2.AppendLine("DTSTART:16011104T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
                SBuilder2.AppendLine("TZOFFSETFROM:-0400")
                SBuilder2.AppendLine("TZOFFSETTO:-0500")
                SBuilder2.AppendLine("END:STANDARD")
                SBuilder2.AppendLine("BEGIN:DAYLIGHT")
                SBuilder2.AppendLine("DTSTART:16010311T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
                SBuilder2.AppendLine("TZOFFSETFROM:-0500")
                SBuilder2.AppendLine("TZOFFSETTO:-0400")
            ElseIf TimeZone = "MT" Then
                TZID = "Mountain Standard Time"
                SBuilder2.AppendLine("TZID:Mountain Standard Time")
                SBuilder2.AppendLine("BEGIN:STANDARD")
                SBuilder2.AppendLine("DTSTART:16011104T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
                SBuilder2.AppendLine("TZOFFSETFROM:-0600")
                SBuilder2.AppendLine("TZOFFSETTO:-0700")
                SBuilder2.AppendLine("END:STANDARD")
                SBuilder2.AppendLine("BEGIN:DAYLIGHT")
                SBuilder2.AppendLine("DTSTART:16010311T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
                SBuilder2.AppendLine("TZOFFSETFROM:-0700")
                SBuilder2.AppendLine("TZOFFSETTO:-0600")
            ElseIf TimeZone = "AT" Then
                TZID = "Atlantic Standard Time"
                SBuilder2.AppendLine("TZID:Atlantic Standard Time")
                SBuilder2.AppendLine("BEGIN:STANDARD")
                SBuilder2.AppendLine("DTSTART:16011104T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
                SBuilder2.AppendLine("TZOFFSETFROM:-0300")
                SBuilder2.AppendLine("TZOFFSETTO:-0400")
                SBuilder2.AppendLine("END:STANDARD")
                SBuilder2.AppendLine("BEGIN:DAYLIGHT")
                SBuilder2.AppendLine("DTSTART:16010311T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
                SBuilder2.AppendLine("TZOFFSETFROM:-0400")
                SBuilder2.AppendLine("TZOFFSETTO:-0300")
			ElseIf TimeZone = "PT" Then
                TZID = "Pacific Standard Time"
                SBuilder2.AppendLine("TZID:Pacific Standard Time")
                SBuilder2.AppendLine("BEGIN:STANDARD")
                SBuilder2.AppendLine("DTSTART:16011104T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
                SBuilder2.AppendLine("TZOFFSETFROM:-0700")
                SBuilder2.AppendLine("TZOFFSETTO:-0800")
                SBuilder2.AppendLine("END:STANDARD")
                SBuilder2.AppendLine("BEGIN:DAYLIGHT")
                SBuilder2.AppendLine("DTSTART:16010311T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
                SBuilder2.AppendLine("TZOFFSETFROM:-0800")
                SBuilder2.AppendLine("TZOFFSETTO:-0700")
			ElseIf TimeZone = "CT" Then
                TZID = "Central Standard Time"
                SBuilder2.AppendLine("TZID:Central Standard Time")
                SBuilder2.AppendLine("BEGIN:STANDARD")
                SBuilder2.AppendLine("DTSTART:16011104T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11")
                SBuilder2.AppendLine("TZOFFSETFROM:-0500")
                SBuilder2.AppendLine("TZOFFSETTO:-0600")
                SBuilder2.AppendLine("END:STANDARD")
                SBuilder2.AppendLine("BEGIN:DAYLIGHT")
                SBuilder2.AppendLine("DTSTART:16010311T020000")
                SBuilder2.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3")
                SBuilder2.AppendLine("TZOFFSETFROM:-0600")
                SBuilder2.AppendLine("TZOFFSETTO:-0500")
            Else
                Throw New System.Exception("Unsupproted Timezone")
            End If
            SBuilder2.AppendLine("END:DAYLIGHT")
            SBuilder2.AppendLine("END:VTIMEZONE")
            ''End of Timezone logic
            ''Begin Event
            SBuilder2.AppendLine("BEGIN:VEVENT")
            For Each DR As Object In EmailList.Rows
                SBuilder2.AppendLine(String.Format("ATTENDEE;RSVP=TRUE:mailto:{0}", DR("EmailId")))
            Next

            Dim utcDateTime As DateTime = DateTime.UtcNow
            SBuilder2.AppendLine("CLASS:PUBLIC")
            SBuilder2.AppendLine(String.Format("CREATED:{0:yyyyMMddTHHmmssZ}", utcDateTime))
            SBuilder2.AppendLine(String.Format("DESCRIPTION:{0}", Description))
            SBuilder2.AppendLine("DTEND;TZID=" & Chr(34) & TZID & Chr(34) & ":" & String.Format("{0:yyyyMMddTHHmmss}", endtime))
            SBuilder2.AppendLine(String.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", utcDateTime))
            SBuilder2.AppendLine("DTSTART;TZID=" & Chr(34) & TZID & Chr(34) & ":" & String.Format("{0:yyyyMMddTHHmmss}", starttime))
            SBuilder2.AppendLine(String.Format("LAST-MODIFIED:{0:yyyyMMddTHHmmssZ}", utcDateTime))
            SBuilder2.AppendLine(String.Format("ORGANIZER;mailto:{0}", OrganizerMail))
            SBuilder2.AppendLine("PRIORITY:5")
            SBuilder2.AppendLine("SEQUENCE:0")
            SBuilder2.AppendLine(String.Format("SUMMARY;LANGUAGE=en-us:{0}", Subject))
            SBuilder2.AppendLine("TRANSP:OPAQUE")
            SBuilder2.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", HtmlBody))
            SBuilder2.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY")
            SBuilder2.AppendLine("X-MICROSOFT-CDO-IMPORTANCE:1")
            SBuilder2.AppendLine("X-MICROSOFT-DISALLOW-COUNTER:FALSE")
            SBuilder2.AppendLine("X-MS-OLK-AUTOFILLLOCATION:TRUE")
            SBuilder2.AppendLine("X-MS-OLK-CONFTYPE:0")
            SBuilder2.AppendLine("BEGIN:VALARM")
            SBuilder2.AppendLine("TRIGGER:-PT15M")
            SBuilder2.AppendLine("ACTION:DISPLAY")
            SBuilder2.AppendLine("DESCRIPTION:Reminder")
            SBuilder2.AppendLine("END:VALARM")
            SBuilder2.AppendLine("END:VEVENT")
            SBuilder2.AppendLine("END:VCALENDAR")

            Using sw As New System.IO.StreamWriter(System.IO.File.Open(ICSFileFullPath, System.IO.FileMode.OpenOrCreate))
                sw.WriteLine(SBuilder2.ToString())
            End Using
            Success = True

        Catch
            ErrorMsg = Err.Description
            Success = False

End Try

Please find the VB.NET code for creating the file attachment above. Below is object action snippet

37168.pngThis has logic to support the Canadian Time zones. You can change this part of code according to your requirement.