SharePoint には「予定表」リストが用意されています。これは初期状態ではカレンダー表示がされる共有予定表ですが、設定から「グループ予定表」に切り替えることができます。リストの設定から「全般設定」-「リスト名、説明、ナビゲーションの列挙」にある「グループの予定表オプション」で、「この予定表を使用して、メンバーのスケジュールを共有しますか?」を「はい」に変更します。

20140425-1

設定を変更すると、予定表の既定ビューが下図のように変更されます。

20140425-2

他のメンバーの予定を確認する

他のメンバーの予定を確認したい場合は、下図の「人の追加」に追加したいユーザーを指定します。

20140425-3

実際に追加されると、追加したユーザーの予定も縦に並んで表示されます。ちなみに、ユーザー名の右横の「バツ」をクリックすると、一覧から非表示になります。

20140425-4

予定の登録

予定登録画面もグループ予定表として設定されると、空き時間情報を確認できるなどの変更がされています。他のメンバーとの打合せなどの予定を登録するには、「出席者」を入力します。

20140425-5

SharePoint グループとの関係

他のメンバーの予定を確認するときに、毎回一人ずつ追加するのは大変です。そこで、リボン メニューの「予定表」タブから「人の選択」をドロップ ダウンし目的のグループを指定することで、指定された SharePoint グループに含まれるユーザーを一括追加できます。

20140425-6

注意点としては、選んだ SharePoint グループにセキュリティ グループが登録されていた場合、そのセキュリティ グループも一覧に追加されてしまいます。これは大変イマイチな仕様ですね。(ただ、会議室などのリソースの代わりに使えたりするかもしれません…)また、この操作はチーム サイトがサブ サイトとなっている場合は、サブ サイトで固有の権限を使用できる設定になっており、かつ、サブ サイトに SharePoint グループが作成されていないと利用できないようです。

(2017/2/9 追記)ここで選択できる SharePoint グループは、自身がメンバーとして登録されている SharePoint グループのみとなります。

ちょっと JavaScript でカスタマイズ

せっかくなのでカスタマイズのネタとして、SharePoint グループを選択する際のクリック操作数を減らしてみます。アプローチとしては、リボン メニューと同じ処理が動くボタンを作成してみることにしました。これで、3クリック必要になる操作が、1クリックで済むようにしたいと思います。予定表のビューにスクリプト エディターを追加して、下記を入力します。

<script type="text/javascript">
function getMemberSchedule(){
	var a = {
		CommandValueId: "16",
		SourceControlId: "Ribbon.Calendar.Selector.People.Menu.Entities.1"
	}
	SP.Ribbon.PageManager.get_instance().get_commandDispatcher().executeCommand("CalendarPeopleMenuSelect", a);
}
</script>
<button onClick="getMemberSchedule();return false;">メンバーの予定を表示</button>

すると表示されるボタンをクリックすることで、リボン メニューから操作した場合と同様に SharePoint グループに含まれる他のユーザーの予定が表示されるようにできました。今回は、既定で作成される「xx メンバー」グループに登録されているユーザーの予定が表示されるようにしています。

20140425-7

もっとカスタマイズ

(2017/2/9 追記)「SharePoint グループ」の選択ではなく「ユーザーまたはグループの追加」を利用して任意のユーザーをあらかじめ予定表の一覧に表示しておきたいという要望に対応するカスタマイズ方法が記載されているページ(英語)をご紹介します。

SharePoint Group Calendar, Adding default users
https://blogs.technet.microsoft.com/meamcs/2013/04/09/sharepoint-group-calendar-adding-default-users/

簡単に解説しますと、「ユーザーまたはグループの追加」から予定表にユーザーを追加した場合、動的に生成される XML を利用し表示に反映させているようです。そこで、その XML を自作の JavaScript 内に含んでおき、SharePoint の JavaScript API を使って任意のタイミング(サンプルでは、ページを開いたとき)で、「ユーザーまたはグループの追加」から予定表にユーザーを追加した場合と同等の処理を実行させています。少々複雑なカスタマイズですが、こうした要望も多いかと思いましたのでご紹介しました。

さいごに

「予定表」リストの「グループ予定表」について見てきました。ただ、実際はこうした用途では Exchange の予定表を利用される場合も多いのかな?とも思っています。しかしながら、SharePoint をチームで利用している(しようとしている)ユーザーさんも多いかと思いますので、グループ予定表を利用、検討される際のご参考として頂ければと思います。