SharePoint でプログラムを使用して位置情報の列をリストに追加する

SharePoint のリストに、プログラムによって位置情報列を追加する方法について説明します。 新しいジオロケーションフィールドを使用して、独自の位置情報に基づいたフィールド型を作成することにより、SharePointリストと位置情報に基づいた Web サイトに位置情報とマップを統合します。

SharePoint では、ジオロケーションと呼ばれる新しいフィールド型が導入されており、位置情報を使用して SharePoint リストに注釈を付けることができます。 列の種類「ジオロケーション」に位置情報を緯度と経度の座標ペアとして 10 進数の度数で入力したり、W3C Geolocation API が実装されている場合は、ブラウザーからユーザーの現在位置の座標を取得したりできます。 [位置情報] 列の詳細については、「SharePoint でロケーションとマップ機能を組み込む」を参照してください。 [位置情報] 列は、SharePoint リストでは既定では使用できません。 [地理位置情報] 列を SharePoint リストに追加するには、コードを記述する必要があります。 この記事では、SharePoint クライアント オブジェクト モデルを使用してプログラムによって地理位置情報フィールドをリストに追加する方法について説明します。

地理位置情報フィールドの値またはデータをリストに表示するには、SQLSysClrTypes.msi という MSI パッケージをすべての SharePoint フロントエンド Web サーバーにインストールする必要があります。 このパッケージは、新しい図形座標、地理、および階層 ID の種類を SQL Server 2008 に実装するコンポーネントをインストールします。 既定では、このファイルが SharePoint Online 用にインストールされます。 ただし、これは SharePoint のオンプレミス展開用ではありません。 この操作を実行するには、Farm Administrators グループに属していることが必要です。 SQLSysClrTypes.msiをダウンロードするには、Microsoft ダウンロード センターの「Microsoft SQL Server 2008 R2 SP1 Feature Pack for SQL Server 2008」または「Microsoft SQL Server 2012 Feature Packfor SQL Server 2012」を参照してください。

位置情報列を追加するための前提条件

注:

PnP PowerShell はオープン ソース ソリューションであり、アクティブなコミュニティでサポートが提供されています。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

コード例: プログラムによって [地理位置情報] 列を既存リストに追加する

[地理位置情報] 列をリストに追加する次の手順に従います。 この手順は、CSOM または PowerShell でプログラムを使用して行う必要があります

PnP PowerShell を使用して、[地理位置情報] 列をリストに追加するには

  1. PowerShell を開く

  2. 列を追加するサイトに接続します

    Connect-PnPOnline -url "https://TENANT.sharepoint.com/sites/SITEURL"
    
  3. 列を追加するリストを開きます

    $list = Get-PnPList -Identity "LISTNAME"
    
  4. [位置情報] フィールドを#Addする - 必要に応じてパラメーターを変更する

    Add-PnPField -List $list -Type GeoLocation -DisplayName "GeoLocationField" -InternalName "GeoLocationField" -AddToDefaultView -Required
    

クライアント オブジェクト モデルを Visual Studio で使用して、リストに [地理位置情報] 列を追加するには

  1. Visual Studio を起動します。

  2. メニュー バーで、[ファイル]、[新規作成]、[プロジェクト] の順に選択します。 [新しいプロジェクト] ダイアログ ボックスが表示されます。

  3. [ 新しいプロジェクト] ダイアログ ボックスの [ インストールされたテンプレート] ボックスで [ C#] を選択して、[ コンソール アプリケーション] テンプレートを選択します。

  4. プロジェクトに名前をつけて、[ OK] をクリックします。

  5. Visual Studio がプロジェクトを作成します。 参照を次のアセンブリに追加し、[ OK] を選択します。

    • Microsoft.SharePoint.Client.dll
    • Microsoft.SharePoint.Client.Runtime.dll
  6. 既定の .cs ファイルでは、次のように using ディレクティブを追加します。

    using Microsoft.SharePoint.Client;
    
  7. 次に示すコードを cs ファイル内の Main メソッドに追加します。

    class Program
    {
      static void Main(string[] args)
      {
        AddGeolocationField();
        Console.WriteLine("Location field added successfully");
      }
      private static void AddGeolocationField()
      {
        // Replace site URL and List Title with Valid values.
        ClientContext context = new ClientContext("<Site Url>");
        List oList = context.Web.Lists.GetByTitle("<List Title>");
        oList.Fields.AddFieldAsXml("<Field Type='Geolocation' DisplayName='Location'/>",true, AddFieldOptions.AddToAllContentTypes);
        oList.Update();
        context.ExecuteQuery();
      }
    }
    
  8. <Site Url><List Title> を有効な値で置き換えます。

  9. [プロジェクトのプロパティ] で対象のフレームワークを .NET Framework 4.0 または 3.5 に設定し、コード例を実行します。

  10. リストに移動します。 リスト内に、地理位置情報タイプの [場所] という列があるはずです。 この列に値を入力し、動作を確かめることができます。 図 1 に、リスト内に表示される既定の位置と地図機能を示します。

    図 1. 既定の位置と地図機能の概要図 既定の地理位置情報およびマップ機能

プログラムによって、地理位置情報フィールド値を持つリスト アイテムを SharePoint リストに追加する

位置情報フィールドが SharePoint リストに追加された後、開発者はプログラムによってリスト項目をリストに追加できます。 リスト アイテムをプログラムで追加するには、 FieldGeolocationValue オブジェクトを Geolocation フィールドに渡すことと、 Raw Value を Geolocation フィールドに渡す方法の 2 つの方法があります。

メソッド A: FieldGeolocationValue オブジェクトを地理位置情報フィールドに渡す

  • 次のメソッドは、地理位置情報フィールド値をオブジェクトに渡すことで、リスト アイテムを追加します。

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
    
      FieldGeolocationValue oGeolocationValue = new FieldGeolocationValue();
      oGeolocationValue.Latitude = (double)17.4;
      oGeolocationValue.Longitude = (double)78.4;
      oListItem["location"] = oGeolocationValue;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

メソッド B: 新しい Raw 値を地理位置情報フィールドに渡す

  • 次のメソッドは、Raw 値を地理位置情報フィールド値に渡すことで、SharePoint リストに項目を追加します。

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
      // Data in WKT (World Known Text) format.
      oListItem["location"] = "POINT (78.4 17.4)" ;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

関連項目