2017-12-13 24 views
0

Webアプリケーションダッシュボードビューに次の月のユーザーのカレンダーエントリを表示する必要があります。WebアプリケーションからOutlookを起動して特定のカレンダーエントリを開く

私は正常にこのドキュメント以下、これを達成するために、Exchange Webサービスを使用していた

https://msdn.microsoft.com/en-us/library/office/dn495614(v=exchg.150).aspx

このタスクの最終的な要件は、ユーザーが(自分のブラウザで)エントリをクリックした場合ということです。

Outlookはマシン上で開き、実際のカレンダーエントリに直接移動します。

私は予定オブジェクトを検査しましたが、私はカレンダーIDへのアクセス権を持っていますが、これをサーバーに簡単に渡すことができますが、私はちょっと混乱しています。そのエントリIDを開くように指示します。

これは別のEWSコールかOffice.Interop.Outlookか、それはまったく可能ですか?

これがこれ以上難しくなる場合、これは.Net Core 2.0 Webアプリケーションです。

+0

恐ろしいユーザー名です。ブラウザが好きな情報をローカルアプリケーションに渡すことができれば、どうすれば安全ではないか想像できますか? – Equalsk

+0

あなたができることは、OSがOutlookに渡すことを知っているURIを作ることだけです。しかし、 'outlook://'スキームはOffice 2007で廃止されましたので、これ以上は可能ではありません。 – DavidG

+0

クライアントはIEを使用していますか? IEではActiveXコンポーネントを使用できます。しかし、Edgeを使用している場合、これはその価値を失います。 [これを見てください](https://stackoverflow.com/questions/1637077/outlook-automation-from-a-web-application-to-create-appointments) – rodrigogq

答えて

1

Outlookはコマンドラインスイッチを受け入れますが、そのうちの1つはOutlookアイテムを開こうとします/select

これで、Outlookをコマンドライン引数で起動するためのURLを作成するだけで済みます。 IEの場合

が、これはあなたのWebアプリケーションが信頼されていると仮定すると、あまりにも難しいことではありません。

javascript:(new ActiveXObject('Shell.Application')).ShellExecute('outlook.exe','/select outlook:<entryid>'); 

はクロームのために、あなたはCMDファイルを送信またはダウンロードされたヘルパーexeファイルを作成することもできますが、ユーザーがしなければなりません手動でオープンして起動します。

+0

ありがとう、私が行っている解決策ではなく、興味深いものではありません。 – JsonStatham

+0

何を持ってきましたか? – NetMage

+0

私は正しくフレーズをしなかった。私は、Outlookクライアントを起動するのをやめたのですが、代わりにEWSに戻り、すべてのプロパティを取得し、この行を使ってブラウザにアイテム全体を表示しました。Appointment appointmentDetailed = Appointment.Bind(service、appt.Id、新しいPropertySet(BasePropertySet.FirstClassProperties){RequestedBodyType = BodyType.Text}); – JsonStatham

関連する問題