ActiveXテクノロジを使用してWebアプリケーションからのOutlookを自動化することは標準的な方法ですか?これは、telerikのRadScheduler + telerikのExchangeプロバイダーのようなWebスケジューラーと比較して、Webアプリケーション自体からの予定をスケジュールするのですか?
ありがとう、
センディル
ActiveXテクノロジを使用してWebアプリケーションからのOutlookを自動化することは標準的な方法ですか?これは、telerikのRadScheduler + telerikのExchangeプロバイダーのようなWebスケジューラーと比較して、Webアプリケーション自体からの予定をスケジュールするのですか?
ありがとう、
センディル
Web アプリケーション内で Outlook の自動化を説明するだけでなく、何を達成しようとしているのかについて詳細を提供する必要があります。私がこれを言う理由は、それはあなたが何をしようとしているのかに本当に依存するからです. 予定を作成するだけなら、activex は必要ありません。
ここで調べたり調べたりできることがあります。今すぐ Outlook にアクセスして、予定を作成します。次に、ファイル メニューに移動し、[名前を付けて保存] を実行して、予定をデスクトップに保存します。ファイルが .ics ファイルとして保存されていることがわかります。実際にこのファイルをメモ帳またはワードで開いて、その内容を表示できます。
たとえば、メモ帳での表示例は次のとおりです。
開始:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN バージョン:2.0 方法:公開 X-MS-OLK-FORCEINSPECTOROPEN:TRUE 開始:VEVENT クラス:公開 作成日:20091028T125325Z 説明:テスト\n DTEND:20091028T133000Z DTスタンプ:20091028T125325Z DTSTART:20091028T130000Z 最終更新日:20091028T125325Z 優先度:5 シーケンス:0 概要;LANGUAGE=en-us:test TRANSP:OPAQUE UID:040000008200E00074C5B7101A82E008000000005062431CAC57CA01000000000000000 0100000003E756880D89B504BBA9FF0FDC7D16F43 X-ALT-DESC;FMTTYPE=text/html:\n\n\n\n\n\n\n\n\nテスト\n\n\n X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-DISALLOW-COUNTER:FALSE X-MS-OLK-ALLOWEXTERNCHECK:TRUE X-MS-OLK-CONFTYPE:0 開始:Valarm トリガー:-PT15M アクション:表示 説明:リマインダー END:ヴァルアーム END:VEVENT END:Vカレンダー
StreamWriter とメモリ ストリームにアクセスできるため、asp.net / asp を使用して予定を生成できます。これは正確には、このようなテキスト ファイルを生成できることを意味し、このようなテキスト ファイルを生成するとどうなるかを推測して、予定を作成したことになります。これは、私がカレンダー アイテム用に書いた例です。私が働いている会社の休暇/休暇申請を追跡するためのツールを作成しました。マネージャーが求めていた機能の 1 つは、従業員のリクエストをマネージャーのカレンダーに追加する方法でした。マネージャーは常に Outlook の中にいるため、Outlook カレンダーをすばやく見て、誰がオフィスにいて誰がオフィスにいないかを確認したいと考えていました。Outlook の予定表アイテムを手動で作成することもできますが、手作業が多すぎるのは理想的ではありませんでした。
そこで、StreamWriter とメモリ ストリームを使用して、Outlook の予定表アイテムを生成しました。
次に例を示します。
<%@ Page Language="vb" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="True" trace="False"%>
<%@ import Namespace="System.IO" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title></head>
<body>
<script runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
'PARAMETERS
Dim beginDate as Date
Dim endDate as Date
Dim VType as String = Request.QueryString("vtype")
Dim h As Double = Request.QueryString("hours")
If h = 8 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 4:00 PM"
ElseIf h = 4 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 12:00 PM"
ElseIf h = 1 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 8:00 AM"
ElseIf h = 2 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 9:00 AM"
ElseIf h = 3 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 10:00 AM"
ElseIf h = 5 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 12:00 PM"
ElseIf h = 6 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 1:00 PM"
ElseIf h = 7 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 2:00 PM"
ElseIf h = 9 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 5:00 PM"
ElseIf h = 10 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 6:00 PM"
ElseIf h = 11 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 7:00 PM"
ElseIf h = 12 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 8:00 PM"
ElseIf h = 13 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 9:00 PM"
ElseIf h = 14 Then
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 10:00 PM"
Else
beginDate = Request.QueryString("vdate") & " 7:00 AM"
endDate = Request.QueryString("vdate") & " 12:00 AM"
End If
Dim myLocation as String = Request.QueryString("location")
Dim mySubject as String = Request.QueryString("subject")
Dim myDescription as String = Request.QueryString("Description")
'INITIALIZATION
Dim mStream As new MemoryStream()
Dim writer As new StreamWriter(mStream)
writer.AutoFlush = true
'HEADER
writer.WriteLine("BEGIN:VCALENDAR")
writer.WriteLine("PRODID:-//Flo Inc.//FloSoft//EN")
writer.WriteLine("BEGIN:VEVENT")
'BODY
writer.WriteLine("DTSTART:" & beginDate.ToUniversalTime.ToString("yyyyMMdd\THHmmss\Z") )
writer.WriteLine("DTEND:" & endDate.ToUniversalTime.ToString("yyyyMMdd\THHmmss\Z") )
writer.WriteLine("LOCATION:" & myLocation)
writer.WriteLine("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" & myDescription)
writer.WriteLine("SUMMARY:" & mySubject)
writer.WriteLine("X-MICROSOFT-CDO-BUSYSTATUS:FREE")
'FOOTER
writer.WriteLine("PRIORITY:5")
writer.WriteLine("END:VEVENT")
writer.WriteLine("END:VCALENDAR")
'MAKE IT DOWNLOADABLE
Response.Clear() 'clears the current output content from the buffer
Response.AppendHeader("Content-Disposition", "attachment; filename=Add2Calendar.vcs")
Response.AppendHeader("Content-Length", mStream.Length.ToString())
Response.ContentType = "application/download"
Response.BinaryWrite(mStream.ToArray())
Response.End()
End Sub
</script>
</body>
</html>
asp.net アプリケーションから MS Office を自動化する方法はいくつかありますが、その場合は自己責任で行ってください。私の記憶が正しければ、dcom が正しく機能するために偽装を使用する必要があり、そうすると、Web アプリケーションに大きなセキュリティ ホールが残る可能性があります。
MS は Web アプリケーション内からの Office の自動化を推奨もサポートもしていないため、Open Office XMLを使用することをお勧めします。