質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

3152閲覧

【Winform】他者のOutlookスケジュールを取得できるようにしたい

nya-3

総合スコア27

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2022/08/04 00:41

前提

[C#] Outlookの予定表から予定を取得する
https://www.ipentec.com/document/csharp-outlook-get-calender-appointment-item

Outlook1.6のライブラリを参照し
自分のOutlookデータを取得することは出来ました。

実現したいこと

他の人のスケジュールを取得できるようにしたいです。
400名ほど会社に居て、県別(北海道、青森、秋田…東京など)で
予定を分かりやすく取得したいのです。

予定表を追加⇒ディレクトリから追加で1人ずつ追加していくことは出来ますが、凄く時間がかかりますし出来ればやりたくありません。

【実現したいこと】
予定表を追加⇒ディレクトリから追加 の自動化
UWSCやSelerium(Chrome)で操作できるか確認しましたが
上手くいきませんでした。
ディレクトリから追加の時、メールアドレスを要素のIDに追加すればいけるのかと思いましたが、どうにも上手くいかず断念しています。

発生している問題・エラーメッセージ

C#(Winform)のデータは削除してしまったのですが
Excel(VBA)でやったときは以下のエラーが出ていました

実行時エラー2147024891(80070005) オブジェクトを処理するためのアクセス権がありません。フォルダーの連絡先か、システム管理者に連絡してください

教えてほしい事

予定を追加⇒ディレクトリから追加 の自動化は可能でしょうか?
方法をググッてはみたのですが、特に情報はありませんでした。

以下、グループを作成する方法もありましたが
私には権限がない為に出来ませんでした。
https://info-con.co.jp/tips/office_outlook-01-schedule_share/

補足情報(FW/ツールのバージョンなど)

VisualStudio2019 .NETFramework4.7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nya-3

2022/08/04 03:02

kikukiku様、回答ありがとうございます。 試してみましたが System.UnauthorizedAccessException: 'オブジェクトを処理するためのアクセス権がありません。 フォルダーの連絡先か、システム管理者に連絡してください。' というエラーが表示されました。 参照するだけで良いのですが、たぶん作成とかも出来ないとこれは利用できないのですね。ディレクトリに追加を実施してから再度実行してみましたが、エラーが出る症状はかわりませんでした。
guest

回答1

0

ベストアンサー

結論から言うと、他のユーザーの予定表に参照者以上の権限がなければ自動化は不可能です。

Outlookで他のユーザーの予定表を参照する場合、内部的には以下の2つの方法があります。

  1. 空き時間情報を取得する
  2. 他のユーザーのメールボックスの予定表から直接予定データを取得する

上記の1.については既定でも取得する権限が与えられていることがほとんどであり、Outlookで他のユーザーの予定表を追加した場合はこの方法でも予定の取得が可能です。
一方、2.については予定表のフォルダーのアクセス権で明示的に参照可能なユーザーを「参照者」という権限で追加しておく必要があります。

追加した他のユーザーの予定表の予定をダブルクリックしたときに予定アイテムが開ければ2.の方法、開けなければ1.の方法でアクセスしていることになります。

そして、Outlookのマクロで予定表を追加するには2.の方法を使用する必要があり、権限がない場合にご質問のエラーが表示されます。
どうしてもOutlookのマクロで実現したいということなのであれば、まずは参照したいユーザー全員の予定表にアクセスできる権限を付与してもらうようお願いする必要があります。

Outlookのマクロにこだわらないということであれば、Exchange Web Serviceという機能を使用して空き時間情報を取得することは可能です。
詳細については以下のブログの記事を参考にしてみてください。
https://outlooklab.wordpress.com/2014/09/06/%e3%80%8c%e7%a9%ba%e3%81%8d%e6%99%82%e9%96%93%e6%83%85%e5%a0%b1%e3%80%81%e4%bb%b6%e5%90%8d%e3%80%81%e5%a0%b4%e6%89%80%e3%80%8d%e3%81%ae%e6%a8%a9%e9%99%90%e3%81%8c%e3%81%82%e3%82%8b%e4%bb%96%e3%81%ae/

投稿2022/08/05 00:59

millefeuille

総合スコア221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nya-3

2022/08/05 02:21

回答ありがとうございます。 Outlookのカレンダー画面で 「予定表を追加」⇒「ディレクトリから追加」⇒「メールアドレスを入力」 と手動であれば、予定表の追加作業は出来るのです。 これを自動化できればと思ったのですが、出来ないのですね…。 Outlookのマクロにこだわっているわけではないですが、 Exchange Web Serviceは良く分かりません。そもそもサイトのアドレスも分かりません…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問