Jump to content
Sign in to follow this  
visler

Deleting appointment in outlook

Recommended Posts

Hi all

I been using autoit some years ago and needed a tool for changing various in outlook so i found autoit again and i allready succeed in some of this, but i cant find and delete an appointment.

I have found this example and the creation is ok (after i changed $oOL/$oOutlook typo)

Https://www.autoitscript.com/wiki/OutlookEX_UDF_-_Meeting_Item

But i cant get the delete part to work and i keep on getting "not found" and an empty array (screen shoot of _ArrayDisplay attached)

Please can someone tell me what i am missing, i have been searching and trying various but stil i have no luck in finding any items.

I am using outloook 2013 and office365. I have been able to send mails and create appointment, so i guess my problem is not due to the use off office365.


 

ScreenHunter_1774 Nov. 02 08.06.jpg

Share this post


Link to post
Share on other sites

I fixed the typos in the wiki.

Can you please post the code you use to create and delete the appointment?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

I have tried various thing, but using the examples creates a meeting ok, but the deleting example does not work for me

 

"#include <OutlookEx.au3>
; Open the connection to Outlook
Global $oOL = _OL_Open()
; Get the appointment you want to cancel
$aResult = _OL_ItemFind($oOL, "*\Calendar", "", "[Subject]='Meeting'", "", "", "EntryID")
_ArrayDisplay
$oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")
; Send the meeting request
_OL_ItemSend($oOL, $oItem)

Edited by visler

Share this post


Link to post
Share on other sites

What is the value of @error and @extended after calling _OL_ItemModify and _OL_ItemSend?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

I have updated the code to display error codes and screenshoot attached

"#include <OutlookEx.au3>
; Open the connection to Outlook
Global $oOL = _OL_Open()
; Get the appointment you want to cancel
$aResult = _OL_ItemFind($oOL, "*\Calendar", "", "[Subject]='Meeting'", "", "", "EntryID")
MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
;
$oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")
MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
; Send the meeting request
_OL_ItemSend($oOL, $oItem)

ScreenHunter_1774 Nov. 02 09.45.jpg

ScreenHunter_1774 Nov. 02 09.47.jpg

Share this post


Link to post
Share on other sites

Please give this modified version of your script a try:

#include <OutlookEx.au3>
; Open the connection to Outlook
Global $oOL = _OL_Open()
; Get the appointment you want to cancel
$aResult = _OL_ItemFind($oOL, "*\Calendar", $olAppointment, "[Subject]='Meeting'", "", "", "EntryID,MeetingStatus")
MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
_ArrayDisplay($aResult)
If $aResult[0][0] > 0 Then ; Items found
    If $aResult[1][1] = 0 Then ; Item is not a meeting, so simply delete it
        _OL_ItemDelete($oOL, $aResult[1][0])
    Else
        $oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")
        MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
        ; Send the meeting request
        _OL_ItemSend($oOL, $oItem) 
    EndIf
EndIf

If the value of MeetingStatus ($aResult[1][1]) is not 1 then you do not need to send a delete request but simply delete the item.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Now the array looks better :)

I am not sure I understand the part about deleting the item instead off sending a delete request.

if MeetingStatus ($aResult[1][1]) <> 1  then

      _OL_ItemDelete($oOL, where do i get this entryid)  
else

    $oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")

endif

 

ScreenHunter_1774 Nov. 02 10.44.jpg

ScreenHunter_1775 Nov. 02 10.44.jpg

Share this post


Link to post
Share on other sites

I modified my script in post #6 (note that I removed the quotes around $olAppointment).
It now distinguishes between meetings (multiple participants) and appointments (entry can only be found in your calendar).


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

I have added a few displays.

#include <OutlookEx.au3>
; Open the connection to Outlook
Global $oOL = _OL_Open()
; Get the appointment you want to cancel
$aResult = _OL_ItemFind($oOL, "*\Calendar", $olAppointment, "[Subject]='Meeting'", "", "", "EntryID,MeetingStatus")
MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
_ArrayDisplay($aResult)
If $aResult[0][0] > 0 Then ; Items found
    If $aResult[1][1] = 0 Then ; Item is not a meeting, so simply delete it
        _OL_ItemDelete($oOL, $aResult[1][0])
        MsgBox(48, "OutlookEX UDF: _OL_Itemdelete", "Errorcode " & @error & ", @extended: " & @extended)
    Else
        $oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")
        MsgBox(48, "OutlookEX UDF: _OL_Itemmodify", "Errorcode " & @error & ", @extended: " & @extended)
        ; Send the meeting request
        _OL_ItemSend($oOL, $oItem)
        MsgBox(48, "OutlookEX UDF: _OL_Itemsend", "Errorcode " & @error & ", @extended: " & @extended)
    EndIf
EndIf

Now the array returned look much more like i expected and all is returning 0 in errorcodes, but it looks like the appoint is not deleted and a re-run gives the same result in the array, but if i delete one of the meetings by hand the results is decreased by 1 .

 

ScreenHunter_1775 Nov. 02 12.28.jpg

ScreenHunter_1777 Nov. 02 12.32.jpg

ScreenHunter_1777 Nov. 02 12.28.jpg

ScreenHunter_1776 Nov. 02 12.28.jpg

Share this post


Link to post
Share on other sites

Seems you then need to delete the meeting from your calendar manually:

#include <OutlookEx.au3>
; Open the connection to Outlook
Global $oOL = _OL_Open()
; Get the appointment you want to cancel
$aResult = _OL_ItemFind($oOL, "*\Calendar", $olAppointment, "[Subject]='Meeting'", "", "", "EntryID,MeetingStatus")
MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", "Errorcode " & @error & ", @extended: " & @extended)
_ArrayDisplay($aResult)
If $aResult[0][0] > 0 Then ; Items found
    If $aResult[1][1] = 0 Then ; Item is not a meeting, so simply delete it
        _OL_ItemDelete($oOL, $aResult[1][0])
        MsgBox(48, "OutlookEX UDF: _OL_Itemdelete", "Errorcode " & @error & ", @extended: " & @extended)
    Else
        $oItem = _OL_ItemModify($oOL, $aResult[1][0], Default, "MeetingStatus=5")
        MsgBox(48, "OutlookEX UDF: _OL_Itemmodify", "Errorcode " & @error & ", @extended: " & @extended)
        ; Send the meeting request
        _OL_ItemSend($oOL, $oItem)
        MsgBox(48, "OutlookEX UDF: _OL_Itemsend", "Errorcode " & @error & ", @extended: " & @extended)
        _OL_ItemDelete($oOL, $oItem)
        MsgBox(48, "OutlookEX UDF: _OL_Itemdelete", "Errorcode " & @error & ", @extended: " & @extended)
    EndIf
EndIf

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

:)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-10-10 - Version 1.5.2.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-12-15 - Version 1.6.3.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Page2PagePro
      Excel VBA's IDE registers a Control-y as "cut this line of code".
      For those prone to Undo/Redo (Ctrl+Z/Ctrl+Y) you may find frustration when your code in the editor does not redo, but in fact clears your active line of code while killing redo history.
      Though not perfect, I keep this tool running in background on startup.
      The purpose is to allow Cltr+Y to act normally throughout Windows and Office and only interact *differently* with the "Microsoft Visual Basic for Applications" window that is active.
      If the Standard Menu bar exists, it'll try to click the ReDo (Blue Arrow to the right), else "Alt+e, r" keystrokes (less desired).
       
      Here's the code:
      Opt('MustDeclareVars', 1) Opt("WinTitleMatchMode", 1) HotKeySet("^y", "TriggerRedo") While 1 Sleep(10) WEnd Func TriggerRedo() ConsoleWrite("TriggerRedo()" & @CRLF) Local $title = "Microsoft Visual Basic for Applications - " Local $hWnd If WinExists($title) And WinActive($title) Then ;~ Parent Window Handle $hWnd = WinGetHandle($title) Local $aWindowPos = WinGetPos($hWnd) ;~ Control Bar Handle, Position and If Visible Local $sControlID = "[CLASS:MsoCommandBar; TEXT:Standard;]" Local $hStandardBar = ControlGetHandle($hWnd, "", $sControlID) Local $bIsVisible = ControlCommand($hWnd, "", $sControlID, "IsVisible") If $hStandardBar And $bIsVisible Then ConsoleWrite("Using Mouse Click." & @CRLF) ;~ Determine Redo button location on visible Control Bar Local $aBarPos = ControlGetPos($hWnd, "", $sControlID) Local $mX = $aWindowPos[0] + $aBarPos[0] + 217 + Int(23/2) Local $mY = $aWindowPos[1] + $aBarPos[1] + 27 + Int(22/2) MouseClick("Left", $mX, $mY, 1, 0) Else ConsoleWrite("Using VBA Send Keys." & @CRLF) $sControlID = "[CLASS:MsoCommandBar; TEXT:Menu Bar;]" Local $hMenuBar = ControlGetHandle($hWnd, "", $sControlID) ControlSend($hWnd, "", $hMenuBar, "!e") ;~ Send("r") $sControlID = "[CLASS:MsoCommandBarPopup; TEXT:Edit;]" Local $hPopupBar = ControlGetHandle($hWnd, "", $sControlID) ControlSend($hWnd, "", $hPopupBar, "r") EndIf Else ConsoleWrite("Using NATIVE Send Keys." & @CRLF) HotKeySet("^y") Send("^y") ;~ may cause "yyy..." when held HotKeySet("^y", "TriggerRedo") EndIf EndFunc ;==>TriggerRedo Hope this inspires someone.
       
       
    • By nacerbaaziz
      goodmorning autoit team
      today am comming with some winhttp problems, i hope that you can help me to solve them.
      the first problem
      is when opening a request
      my forums api allow me to delete any post using the api key
      all functions work, i mean post / get
      but when i tried to use the delete verb it's gave me an html 404 error
      here is what am tried
      #include "WinHttp.au3" ; Open needed handles Global $hOpen = _WinHttpOpen() Global $hConnect = _WinHttpConnect($hOpen, "xxxxxxxx.com") ; Specify the reguest: Global $hRequest = _WinHttpOpenRequest($hConnect, "Delete", "/vb/Api/posts/10447/?hard_delete=true", default, default) _WinHttpAddRequestHeaders($hRequest, "XF-Api-Key:xxxxx") _WinHttpAddRequestHeaders($hRequest, "XF-Api-User:xxxxx") ; Send request _WinHttpSendRequest($hRequest) ; Wait for the response _WinHttpReceiveResponse($hRequest) Global $sHeader = 0, $sReturned = 0 ; If there is data available... If _WinHttpQueryDataAvailable($hRequest) Then $sHeader = _WinHttpQueryHeaders($hRequest, $WINHTTP_QUERY_CONTENT_DISPOSITION) ;Or maybe: ; $sHeader = _WinHttpQueryHeaders($hRequest, BitOR($WINHTTP_QUERY_RAW_HEADERS_CRLF, $WINHTTP_QUERY_CUSTOM), "Content-Disposition") Do $sReturned &= _WinHttpReadData($hRequest) Until @error msgBox(64, "", $sReturned) endIf ; Close handles _WinHttpCloseHandle($hRequest) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen)  
      and here is the error message
      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /vb/Api/posts/10447/ on this server.<br /> </p> </body></html>  
      i hope you can help me 
      thanks in advance
    • By water
      Extensive library to control and manipulate Microsoft Outlook. This UDF holds the functions to automate items (folders, mails, contacts ...) in the background. Can be seen like an API.
      There are other UDFs available to automate Outlook:
      OutlookEX_GUI: This UDF holds the functions to automate the Outlook GUI. OutlookTools: Allows to import/export contacts and events to VCF/ICS files and much more.  Theads: Development - General Help & Support - Example Scripts - Wiki
      BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort

      KNOWN BUGS (last changed: 2020-02-09)
      None
    • By PoojaKrishna
      Hi,
      I am trying to print items from Outlook in a Citrix machine. I am printing the items into PDF files using ‘Microsoft Print to PDF option’. I am using OutlookEX.au3 for printing items.
      Everything is working fine except handling the ‘Save Print Output As’ dialog appearing while trying to print the file to PDF.
      I have set the default printer to ‘Microsoft Print to PDF’ from the control panel ( Control Panel\All Control Panel Items\Devices and Printers) and using the following method to print the item.
      _OL_ItemPrint($oOutlook, $OL_Item) ;print item I am not able to handle the ‘Save Print Output As’ dialog initiated by the print statement in the Citrix machine. The WinActive method always returns false. I have tried with ControlSetText, ControlClick and Send methods also.
      Can anyone please help?
      Func _SavePDF($sFilePath) WinActivate ( "Save Print Output As", "") WinWaitActive ( "Save Print Output As", "",5 ) If WinActive("Save Print Output As") Then sleep(500) Send($sFilePath) sleep(500) Send("{ENTER}") sleep(500) EndIf EndFunc;=>_SavePDF  
    • By nacerbaaziz
      Good morning guys, i hope that you're all well.
      guys, i have a problem and i hope that you can help me
      i've created an 3d array
      the array Contain a Categories info
      as folow
      $array[n][0][0] = Categorie name
      $array[n][0][1] = Categorie file path
      $array[n][0][2] = Categorie contents number
      $array[n][m][0] = link name
      $array[n][m][1] = link url
      $array[n][m][2] = link section name
      in my tool i want to add an option to delete a Category
      as you know the Categorie mean that must delete a region from the array
      when i tried to use _arrayDelete
      with the 2d array it work well
      but here i couldn't find any way to do that, can any one help me please?
      thanks in advance.
×
×
  • Create New...