2009-09-10 8 views
0

Nous devons ajouter et mettre à jour les événements du calendrier Outlook pour plusieurs utilisateurs (différents rendez-vous pour chaque utilisateur) sous le contrôle du programme (VB ou Ruby). Une solution de serveur sans action requise par les utilisateurs individuels est préférée . Une technologie ICAL simple ne semble pas facilement prendre en charge pour mettre à jour des événements existants (c'est-à-dire des changements d'horaire).Comment ajoutons-nous par programme des événements Outlook à plusieurs utilisateurs?

Tous les pointeurs (Snippets, docs de l'API serait apprécié)

BTW: Une solution non-serveur où chaque utilisateur doit exécuter un script similaire à suivre est ce que nous avons actuellement:

# Loosely based on http://snippets.dzone.com/posts/show/4301 

require 'delegate_to' 
require 'win32ole' 

# Simple DSL wrapper out Outlook API 
class OutlookCalendar < Array 
    CALENDAR_FOLDER=9 
    OUTLOOK=WIN32OLE.new 'Outlook.Application' 

    class Event 
     def initialize &block 
      @_=OutlookCalendar::OUTLOOK.CreateItem 1 
      instance_eval(&block) if block_given? 
     end 
     def subject *arg 
      @_.subject=arg.first unless arg.empty? 
      @_.Subject 
     end 
     def start *arg 
      @_.Start=arg.first unless arg.empty? 
      @_.Start 
     end 
     def duration *arg 
      @_.Duration=arg.first unless arg.empty? 
      @_.Duration 
     end 
     def body *arg 
      @_.Body=arg.first unless arg.empty? 
      @_.Body 
     end 
     def location *arg 
      @_.Location=arg.first unless arg.empty? 
      @_.location 
     end 
     def reminder *arg 
      @_.ReminderMinutesBeforeStart=arg.first unless arg.empty? 
      @_.ReminderSet=true 
      @_.ReminderMinutesBeforeStart 
     end 

     delegate_to :_ 
    end 


    def initialize 
     super 
     refresh 
     each{|_| yield _} if block_given? 
    end 

    def refresh 
     mapi=OutlookCalendar::OUTLOOK.GetNameSpace 'MAPI' 
     @calendar=mapi.GetDefaultFolder CALENDAR_FOLDER 
     entries=[] # [ Subject Location Start End Body ] 
     @calendar.Items.each{|_| entries << _} # can't use collect 
     self.replace entries.sort_by{|_| _.Start} 
     self 
    end 

    def << event 
     event.save 
    end 
end 

# Sample Usage: 
if $0==__FILE__ 

    class OutlookCalendar 
     def show 
      each{|_| puts '%s - %s : %s' % [ _.Start,_.End,_.Subject ]} 
     end 
    end 

    Calendar=OutlookCalendar.new 

    # Show original events 
    Calendar.show 

    # Delete possible previous events  
    Calendar.each{|_| _.Delete if /^S3W:/.match _.Subject} 

    # Add updated event 
    Calendar << OutlookCalendar::Event.new do 
     start '7/29/2007 11:00 AM' 
     duration 300 
     subject 'S3W: Hall of Fame Induction' 
     body 'Tony Gwynn and Cal Ripken Jr.' 
     location 'Cooperstown, NY' 
     reminder 15 
    end 

    # Show updated list of events 
    puts '-'*50 
    Calendar.refresh.show 

end  

Répondre

0

Outlook, Exchange et WebDav.

  • Comment créer un calendrier Outlook dossier à l'aide WebDAV dans Visual C#
  • Comment travailler avec des objets dans Exchange 2000 en utilisant WebDAV dans Visual Basic .NET
+0

Merci ... Le deuxième article était utile. Le problème avec une approche WebDav est l'authentification ... La maintenance du nom d'utilisateur/mot de passe pour chaque utilisateur est un problème. Une autre API/approche est-elle possible afin qu'un administrateur de serveur de confiance puisse afficher des événements dans le calendrier Outlook d'un utilisateur spécifique? – DMisener

+0

Oui. Nous utilisons ActiveDirectory (LDAP), mais certains de mes proof-of-concept ont utilisé un administrateur de développement. Je suis désolé, j'ai juste supprimé le code source il y a quelques semaines parce que je ne travaille plus à l'entreprise. – AMissico

Questions connexes