会議ワークスペースから会議を削除する

最終更新日: 2010年7月7日

適用対象: SharePoint Foundation 2010

イベント リストを通じて作成する会議は、関連するイベントが削除されても、取り消されたり削除されたりしません。また、ユーザー インターフェイスを通じて、会議ワークスペース サイトから会議を取り消すことや削除することはできません。このプログラミング作業は、Lists Web サービスと Meetings Web サービスのメソッドを使用するコンソール アプリケーションを作成して、会議ワークスペースから会議を削除する方法を示しています。

会議ワークスペースから会議を削除するには

  1. [方法] コンソール アプリケーションを作成する」の説明に従って、Visual Studio でコンソール アプリケーションを作成します。

  2. Lists Web サービスと Meetings Web サービスの両方に対する Web 参照を、次のように追加します。

    1. ソリューション エクスプローラーの [参照] を右クリックし、[サービス参照の追加] をクリックします。

    2. [サービス参照の追加] ダイアログ ボックスで [詳細設定] をクリックし、[サービス参照設定] ダイアログ ボックスで [Web 参照の追加] をクリックします。

    3. [Web 参照の追加] ダイアログ ボックスの [URL] ボックスに、サービスが適用されるサイトと Web サービスの仮想ディレクトリを含めて、Web サービスの URL を次のように入力します。

      https://Server/sites/Site_Name/_vti_bin/Lists.asmx

    4. [参照の追加] をクリックします。

    5. この手順を繰り返して、Meetings Web サービスに対する参照を Meetings.asmx に追加します。

  3. System.Xml 名前空間に対する using ディレクティブ (Visual Basic では Imports) を、Class1.cs に追加します。

  4. 次のコード サンプルを Main メソッドに追加します。このコードは、Lists Web サービスと Meetings Web サービスをインスタンス化し、現在のユーザーに両方のサービスを使用するための認証を行い、削除する会議を指定する入力をユーザーから受け取ることから始まります。

    Dim listObj As New Web_Reference.Lists()
    listObj.Credentials = System.Net.CredentialCache.DefaultCredentials
    
    'Get Meeting Workspace URL.
    Console.Write("Enter the URL of the Meeting Workspace: ")
    Dim baseURL As String = Console.ReadLine()
    
    'Set URL properties for both objects.
    listObj.Url = baseURL + "/_vti_bin/lists.asmx"
    meetObj.Url = baseURL + "/_vti_bin/meetings.asmx"
    
    'Get meeting InstanceID.
    Console.Write("Enter the InstanceID of the meeting: ")
    Dim InstanceID As String = Console.ReadLine()
    
    Dim xmlDoc As New XmlDocument()
    
    Dim ndQuery As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "")
    Dim ndViewFields As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "")
    Dim ndQueryOptions As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "")
    
    'Create Query to filter based on the InstanceID provided.
    ndQuery.InnerXml = "<Where><Eq><FieldRef Name=""ID""/> + 
         "<Value Type=""Counter""> + InstanceID + "</Value></Eq></Where>"
    
    Try
       'Call GetListItems Web service to get meeting UID.
       Dim ndResult As XmlNode = listObj.GetListItems("Meeting Series", "", ndQuery, ndViewFields, "0", ndQueryOptions)
       Dim MainNode As XmlNode = ndResult.ChildNodes.Item(1)
       MainNode = MainNode.ChildNodes.Item(1)
       Dim eventUID As XmlNode = MainNode.Attributes.GetNamedItem("ows_EventUID")
       Dim UID As String = eventUID.InnerText
    
       'Call RemoveMeeting Web service to cancel meeting.
       'NOTE: You might need to increase the sequence number depending
       'on how many updates have already been made to the meeting.
       meetObj.RemoveMeeting(0, UID, 0, DateTime.Now, True)
    
       Console.WriteLine("Meeting canceled successfully.")
    
       Catch ex As System.Web.Services.Protocols.SoapException
          Console.WriteLine(("Message:" + ControlChars.Lf + 
          ex.Message + ControlChars.Lf + "Detail:" + ControlChars.Lf + 
          ex.Detail.InnerText + ControlChars.Lf + "StackTrace:" + 
          ControlChars.Lf + ex.StackTrace))
    End Try
    
    /*Create necessary objects and set credentials.*/
    Web_Reference.Meetings meetObj = 
       new Web_Reference_Folder_Name.Meetings();
    meetObj.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    Web_Reference.Lists listObj = 
       new Web_Reference.Lists();
    listObj.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    /*Get Meeting Workspace URL.*/
    Console.Write("Enter the URL of the Meeting Workspace: ");
    string baseURL = Console.ReadLine();
    
    /*Set URL properties for both objects.*/
    listObj.Url = baseURL + "/_vti_bin/lists.asmx";
    meetObj.Url = baseURL + "/_vti_bin/meetings.asmx";
    
    /*Get meeting InstanceID.*/
    Console.Write("Enter the InstanceID of the meeting: ");
    string InstanceID = Console.ReadLine();
    
    XmlDocument xmlDoc = new XmlDocument();
    
    XmlNode ndQuery = 
       xmlDoc.CreateNode(XmlNodeType.Element,"Query", "");
    XmlNode ndViewFields = 
       xmlDoc.CreateNode(XmlNodeType.Element,"ViewFields","");
    XmlNode ndQueryOptions = 
       xmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions","");
    
    // Create query to filter based on the InstanceID provided.
    ndQuery.InnerXml = 
       @"<Where><Eq><FieldRef Name=""ID""/><Value Type=""Counter"">" +
       InstanceID + "</Value></Eq></Where>";
    
    try
    {
       /*Call GetListItems Web service to get meeting UID.*/
       XmlNode ndResult = 
          listObj.GetListItems("Meeting Series", "", ndQuery, 
          ndViewFields, "0", ndQueryOptions);
       XmlNode MainNode = ndResult.ChildNodes.Item(1);
       MainNode = MainNode.ChildNodes.Item(1);
       XmlNode eventUID = 
          MainNode.Attributes.GetNamedItem("ows_EventUID");
       string UID = eventUID.InnerText;
    
       /*Call RemoveMeeting Web service to cancel meeting.
       NOTE: You might need to increase the sequence number depending
       on how many updates have already been made to the meeting.*/
       meetObj.RemoveMeeting(0, UID, 0, DateTime.Now, true);
    
       Console.WriteLine("Meeting canceled successfully.");
    }
    catch (System.Web.Services.Protocols.SoapException ex)
    {
       Console.WriteLine("Message:\n" + ex.Message + "\nDetail:\n" + 
          ex.Detail.InnerText + "\nStackTrace:\n" + ex.StackTrace);
    }
    

    この例では XmlDocument オブジェクトを作成し、それを使用して、GetListItems メソッドに渡すパラメーターを作るためのノードを作成しています。GetListItems(String, String, XmlNode, XmlNode, String, XmlNode, String) メソッドは、サイトの関連する会議 (Meeting Series) のリストから、ユーザーが指定したインスタンス ID と等しい ID を持つ項目を返します。クエリの作成には Collaborative Application Markup Language のコア スキーマ が使用されます。GetListItems メソッドから返される ows_EventUID 属性には、削除する会議ワークスペース サイトを識別する GUID が入っており、それが RemoveMeeting メソッドに渡されます。

  5. [デバッグ] メニューの [デバッグ開始] をクリックして、アプリケーションをテストします。