Outlook と SharePoint のフォルダーを同期させるSynchronize Outlook with a SharePoint folder

この例では、プログラムで Outlook と SharePoint フォルダーを接続して、フォルダーの内容を同期させる方法を説明します。This example shows how to programmatically connect Outlook with a SharePoint folder and to synchronize the folder contents.

Example

注意

次のコード例は、『Programming Applications for Microsoft Office Outlook 2007』からの抜粋です。The following code example is an excerpt from Programming Applications for Microsoft Office Outlook 2007.

Outlook では、予定表、連絡先リスト、タスク リスト、ディスカッション掲示板、SharePoint フォルダーにドキュメント ライブラリを同期することができます。In Outlook, you can synchronize calendars, contact lists, task lists, discussion boards, and document libraries to SharePoint folders. 同期を行う際に指定された URL に基づいて、Outlook は SharePoint フォルダーと同じベース タイプのフォルダーを新規に作成します。Based on the URL provided upon synchronization, Outlook will create a new folder of the same base type as the SharePoint folder. たとえば、SharePoint の予定表フォルダーと同期させると、Outlook 内に新しい予定表フォルダーが作成されます。For example, synchronizing to a SharePoint calendar folder will create a new calendar folder in Outlook. SharePoint と同期されるフォルダーは、ユーザーのメールボックスの外にある固有の Outlook 個人用フォルダー (.pst) ファイルに保存されます。SharePoint synchronization folders are stored in their own Outlook Personal Folders (.pst) file outside of the user’s mailbox. OpenSharedFolder (文字列、オブジェクト、オブジェクト、オブジェクト)メソッドは名前空間オブジェクトのを使用して、SharePoint フォルダーと接続することができます。You can connect to a SharePoint folder by using the OpenSharedFolder(String, Object, Object, Object) method of the NameSpace object. なお、stssync:// URL を使用して、SharePoint フォルダーを開くために Outlook で必要とされる SharePoint サーバーの詳細、フォルダー パス、その他の情報を提供する必要があります。Note that you must use a stssync:// URL that provides details about the SharePoint server, folder path, and other information that Outlook needs to open a SharePoint folder.

プログラムで SharePoint フォルダーと接続するときは、共有関係を作成するために使用する適切な URL を決定する必要があります。When connecting to a SharePoint folder programmatically, you must determine the proper URL to use to create the sharing relationship. フォルダーの SharePoint ユーザー インターフェイスに stssync:// URL は明記されていないため、手動で移動先フォルダーを Outlook にリンクします。Because the stssync:// URL is not provided in the SharePoint user interface for the folder, manually link the destination folder into Outlook. その後、次のコード例で、最初のプロシージャである DisplaySharePointUrl を使用して正しい URL を取得します。Then use the first procedure, DisplaySharePointUrl, in the following code example, to get the correct URL. DisplaySharePointUrl は、オブジェクトを使用して、アクティブなエクスプローラー ウィンドウの現在のフォルダー内から共有バインディング情報を探します。DisplaySharePointUrl uses the Table object to look for the sharing binding information in the current folder for the active explorer window. 1 つ以上のバインド コンテキストが検出されると、使用可能なすべての共有コンテキストの URL が表示されます。If one or more binding contexts are found, the URLs for all available sharing contexts will be displayed.

共有のリレーションシップを作成する適切な URL が手に入りました。Now you have the proper URL to create the sharing relationship. Outlook の新しい SharePoint フォルダーを同期させるには、URL をコピーして、2 番目のプロシージャである AddSpsFolder 内の文字列変数 CalendarUrl の代入部分に貼り付けます。To synchronize the new SharePoint folder in Outlook, copy and paste the URL to the assignment of the string variable calendarUrl in the second procedure, AddSpsFolder. AddSpsFolder は、Outlook の新しい SharePoint フォルダーの同期を自動化するために、NameSpace.OpenSharedFolder メソッドを stssync://URL (今回は、DisplaySharePointUrl プロシージャによって作られた URL) で使用します。AddSpsFolder automates the synchronization of the new SharePoint folder in Outlook by using the NameSpace.OpenSharedFolder method with a stssync:// URL (in this case, the URL produced by the DisplaySharePointUrl procedure). AddSpsFolderalso は、"例 SPS カレンダー" というカスタム フォルダーを提供し、このフォルダーで既定の Time to Live (TTL) を使うよう Outlook に指示します。AddSpsFolderalso provides a custom folder name, “Example SPS Calendar”, and specifies Outlook to use the default Time to Live (TTL) for the folder. SharePoint フォルダーは、アイテムの添付ファイルを常にダウンロードするため、ここで指定する必要はありません。SharePoint folders always download item attachments, so you do not have to specify that here.

Visual Studio を使用してこのコード例をテストする場合、Microsoft.Office.Interop.Outlook 名前空間をインポートするときに、まず Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加し、Outlook 変数を指定します。If you use Visual Studio to test this code example, you must first add a reference to the Microsoft Outlook 15.0 Object Library component and specify the Outlook variable when you import the Microsoft.Office.Interop.Outlook namespace. using ステートメントは、コード例の関数の前に直接置くことはできません。パブリッククラス宣言の前に追加する必要があります。The using statement must not occur directly before the functions in the code example but must be added before the public Class declaration. 次のコード行は、C# でインポートおよび割り当てを行う方法を示しています。The following line of code shows how to do the import and assignment in C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void DisplaySharePointUrl()
{
    const string PROP_SYNC_URL = 
        "http://schemas.microsoft.com/mapi/id/{00062040-0000-0000-C000-000000000046}/8A24001E";

    Outlook.Folder folder = Application.ActiveExplorer().CurrentFolder as Outlook.Folder;
    Outlook.Table table = folder.GetTable(Type.Missing, Outlook.OlTableContents.olHiddenItems);
    table.Columns.RemoveAll();
    table.Columns.Add("MessageClass");
    table.Columns.Add(PROP_SYNC_URL);

    StringBuilder sb = new StringBuilder();
    while (!table.EndOfTable)
    {
        Outlook.Row row = table.GetNextRow();
        string msgClass, spsUrl;
        msgClass = row["MessageClass"] as string;
        spsUrl = row[PROP_SYNC_URL] as string;

        if (msgClass == "IPM.Sharing.Binding.In")
        {
            sb.Append(spsUrl);
            sb.Append("\r\n");
        }
    }
    if (sb.Length > 0)
    {
        System.Windows.Forms.MessageBox.Show(
            "The following SharePoint Folder URLs were found:\r\n" + sb.ToString());
    }
    else
    {
        System.Windows.Forms.MessageBox.Show("No SharePoint URLs were found in this folder.");
    }
}

private void AddSpsFolder()
{
    string calendarUrl = "stssync://sts/?ver=1.1&type=calendar&cmd=add-folder&base-url=
        https://example.org/calendar&list-url=/Lists/Calendar/calendar.aspx&guid=&site-name=
        Example%20Site&list-name=Calendar";
    string folderName = "Example SPS Calendar";
    bool useDefaultTTL = true;
    Outlook.Folder calendarFolder =
        Application.Session.OpenSharedFolder(calendarUrl, folderName, Type.Missing, useDefaultTTL) 
        as Outlook.Folder;
    Outlook.Explorer exp =
        Application.Explorers.Add(calendarFolder, Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
    exp.Display();
}

関連項目See also