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
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
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