共用方式為


SPMeeting class

提供方法及可用來使用會議工作區的屬性。

Inheritance hierarchy

System.Object
  Microsoft.SharePoint.Meetings.SPMeeting

Namespace:  Microsoft.SharePoint.Meetings
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'宣告
Public Class SPMeeting
'用途
Dim instance As SPMeeting
public class SPMeeting

備註

會議工作區是可用來收集所有資訊與教材 (英文) 所需的一或多個會議的網站。它可以包含日期、 時間和會議的位置、 共用的文件的文件庫與清單的議程的項目與目標會議、 分派給任務,並採取的決策的相關資訊。

您可以呼叫會傳回由Webs屬性的網站集合的Add方法來建立會議工作區網站。下表包含可搭配Add方法使用的範本的清單。

工作區定義

MPS#0

基本會議工作區

MPS#1

空白會議工作區

MPS#2

決策會議工作區

MPS#3

社交會議工作區

MPS#4

多重頁面會議工作區

您可以擷取現有的會議工作區網站中兩種方式的清單。第一個方法是網站的只要逐一查看目前的所有子網站並測試每個呼叫靜態IsMeetingWorkspaceWeb(SPWeb)方法。在下列範例說明了這項技術。

Dim mwsWebs As New List(Of SPWeb)
Dim subWebs As SPWebCollection =  webSite.Webs 
For Each web As SPWeb In subWebs
   If SPMeeting.IsMeetingWorkspaceWeb(web) Then
      mwsWebs.Add(web)
   End If
Next
List<SPWeb> mwsWebs = new List<SPWeb>();
SPWebCollection subWebs = webSite.Webs;
foreach (SPWeb web in subWebs)
   if (SPMeeting.IsMeetingWorkspaceWeb(web))
      mwsWebs.Add(web);

當您想要在現有的會議工作區中建立會議的新執行個體,另一種技術特別有用。在此情況下主要工作是尋找現有的網站,可容納另一個會議。單一執行個體的會議很容易建立,因為會議工作區可裝載多少個單一執行個體會議上有無限制。不過,週期性會議必須擁有自己的會議工作區。如果您想要為週期性會議工作區,您需要找出一個是空的其中有無任何類型的會議。(以上可能,這是新建立的會議工作區網站)。

GetWorkspacesToLinkTo(Boolean)方法提供解決方案。首先呼叫靜態GetMeetingInformation(SPWeb)方法, SPWeb物件,代表父網站做為引數傳遞。然後呼叫GetWorkspacesToLinkTo方法,傳遞false取得可控單一執行個體的會議或true取得可用以架設週期性會議 (也就是空的工作區網站) 的子網站的子網站。

下列範例會示範技術。

' Create a meeting object.
Dim meetInfo As SPMeeting = SPMeeting.GetMeetingInformation(webSite)

' Get a collection of Meeting Workspace subsites for recurring meetings.
Dim mwsWebs As SPWebCollection = meetInfo.GetWorkspacesToLinkTo(True)
// Create a meeting object.
SPMeeting meetingInfo = SPMeeting.GetMeetingInformation(webSite);

// Get a collection of Meeting Workspace sites for recurring meetings.
SPWebCollection mwsWebs = meetingInfo.GetWorkspacesToLinkTo(true);

在會議工作區網站之後下, 一個工作是加入會議。SPMeeting類別有兩種方法,可協助您完成這項作業。LinkWithEvent方法將會議新增至會議工作區,並接著會在會議連結至事件] 清單中,例如是標準的小組網站設定] 的功能Calendar清單中的項目。

如果您使用維護其自己的約會行事曆的排程應用程式, Add()方法是更妥善地適合您的需求。一個方法的多載Add匯入位於RFC 2445,所定義的格式的會議資訊 「 網際網路行事曆功能和排程核心物件規格 (iCalendar) 」。許多排程的應用程式可以匯出iCalendar格式,包括 Microsoft Windows 行事曆的事件資料。

Add方法將會議新增至指定的工作區,並傳回會議執行個體識別碼 (ID)。方法沒有連結到一個約會Calendar清單上的會議。不過,您可以使用的執行個體識別碼來建立會議的 URL,如SharePoint Foundation沒有,由附加至查詢字串。

https://localhost/single%20instance%20workspace/default.aspx?InstanceID=2

https://localhost/recurring%20meeting%20workspace/default.aspx?InstanceID=20091231

Examples

下面範例會尋找所有會議工作區的子網站與網站相關聯的主控台應用程式。範例應用程式會為都會每個工作區中,取得清單中的下一個 14 天內排程的會議。應用程式,然後列印至 [以下列格式] 主控台的每個會議的相關資訊。

Meeting: Team Meeting
Location: Conf Room
Date: Wednesday, March 04, 2009
Time: 10:00 AM
Workspace URL: http://spvm/Team Meeting/default.aspx?InstanceID=20090304
Linked to the Calendar list at http://spvm/Lists/Calendar

請注意,最後一行是選擇性的根據會議是否連結至SharePoint Foundation事件清單。

Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Meetings

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Construct a query to get meetings scheduled for the next 14 days.
            Dim startDate As String = DateTime.Now.ToString("s")
            Dim endDate As String = DateTime.Now.AddDays(14).ToString("s")
            Dim query As SPQuery = New SPQuery()
            query.ViewXml = _
               "<View><Query><Where><And>" + _
               "<Geq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + startDate + "</Value></Geq>" + _
               "<Leq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + endDate + "</Value></Leq>" + _
               "</And></Where></Query></View>"

            ' Find all Meeting Workspace sites.
            Dim subWebs As SPWebCollection = webSite.Webs
            For Each web As SPWeb In subWebs
               If SPMeeting.IsMeetingWorkspaceWeb(web) Then

                  ' A Meeting Workspace has a Meeting Series list with
                  ' information about all meetings in the workspace.
                  Dim meetings As SPList = web.Lists("Meeting Series")

                  ' Get the meeting items that fit the criteria.
                  Dim items As SPListItemCollection = meetings.GetItems(query)

                  ' Now extract useful information about each meeting.
                  For Each item As SPListItem In items
                     Dim instanceID As Integer = CType(item("InstanceID"), Integer)

                     ' Skip the master record for this workspace.
                     If instanceID > 0 Then
                        Dim url As String = web.Url + "/default.aspx?InstanceID=" + instanceID.ToString()

                        ' The EventUID field can indicate a link to the calendar.
                        Dim eventUID As String
                        Dim isLinked As Boolean = False
                        Dim isRecurring As Boolean = CType(item("fRecurrence"), Boolean)
                        If isRecurring Then
                           ' For recurring events, look in the first item's field.
                           Dim master As SPListItem = meetings.Items(0)
                           eventUID = CType(master("EventUID"), String)
                        Else
                           eventUID = CType(item("EventUID"), String)
                        End If
                        If Nothing <> eventUID Then
                           isLinked = eventUID.StartsWith("STSTeamCalendarEvent")
                        End If

                        Dim dt As DateTime = CType(item("EventDate"), DateTime)

                        ' Print the title, location, date, and time of the meeting,
                        ' the URL to the workspace and optionally the calendar link.
                        Console.WriteLine(vbCrLf + "Meeting: {0}", item.Title)
                        Console.WriteLine("Location: {0}", item("Location"))
                        Console.WriteLine("Date: {0}", dt.ToLongDateString())
                        Console.WriteLine("Time: {0}", dt.ToShortTimeString())
                        Console.WriteLine("Workspace URL: {0}", url)
                        If isLinked Then
                           Dim eventURL As String = CType(item("EventUrl"), String)
                           Dim parts() As String = eventURL.Split(","c)
                           Console.WriteLine("Linked to the {0} list at {1}", _
                                 parts(1).Trim(), parts(0))
                        End If
                     End If
                  Next
               End If
               web.Dispose()
            Next

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Meetings;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.OpenWeb())
            {
               // Construct a query to get meetings scheduled for the next 14 days.
               string startDate = DateTime.Now.ToString("s");
               string endDate = DateTime.Now.AddDays(14).ToString("s");
               SPQuery query = new SPQuery();
               query.ViewXml = 
                  "<View><Query><Where><And>" +
                  "<Geq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + startDate + "</Value></Geq>" +
                   "<Leq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + endDate + "</Value></Leq>" +
                   "</And></Where></Query></View>";

               // Find all Meeting Workspace sites.
               SPWebCollection subWebs = webSite.Webs;
               foreach (SPWeb web in subWebs)
               {
                  if (SPMeeting.IsMeetingWorkspaceWeb(web))
                  {
                     // A Meeting Workspace has a Meeting Series list with
                     // information about all meetings in the workspace.
                     SPList meetings = web.Lists["Meeting Series"];

                     // Get the meeting items that fit the criteria.
                     SPListItemCollection items = meetings.GetItems(query);

                     // Now extract useful information about each meeting.
                     foreach (SPListItem item in items)
                     {
                        int instanceID = (int)item["InstanceID"];

                        // Skip the master record for this workspace.
                        if (instanceID > 0)
                        {
                           string url = web.Url + "/default.aspx?InstanceID=" + instanceID.ToString();

                           // The EventUID field can indicate a link to the calendar.
                           string eventUID;
                           bool isLinked = false;
                           bool isRecurring = (bool)item["fRecurrence"];
                           if (isRecurring)
                           {
                              // For recurring events, look in the first item's field.
                              SPListItem master = meetings.Items[0];
                              eventUID = (string)master["EventUID"];
                           }
                           else
                           {
                              eventUID = (string)item["EventUID"];
                           }
                           if (null != eventUID)
                              isLinked = eventUID.StartsWith("STSTeamCalendarEvent");
                           
                           DateTime dt = (DateTime)item["EventDate"];

                           // Print the title, location, date, and time of the meeting,
                           // the URL to the workspace and optionally the calendar link.
                           Console.WriteLine("\nMeeting: {0}", item.Title);
                           Console.WriteLine("Location: {0}", item["Location"]);
                           Console.WriteLine("Date: {0}", dt.ToLongDateString());
                           Console.WriteLine("Time: {0}", dt.ToShortTimeString());
                           Console.WriteLine("Workspace URL: {0}", url);
                           if (isLinked)
                           {
                              string eventURL = (string)item["EventUrl"];
                              string[] parts = eventURL.Split(',');
                              Console.WriteLine("Linked to the {0} list at {1}",
                                 parts[1].Trim(), parts[0]);
                           }
                        }
                     }
                  }
                  web.Dispose();
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

Thread safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

請參閱

參照

SPMeeting members

Microsoft.SharePoint.Meetings namespace

其他資源

How to: Customize Meeting Workspaces Using the Windows SharePoint Services Object Model

How to: Add a Recurring Event to Lists on Multiple Sites