当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:如何使用 PowerShell 将地理位置(Bing 地图)字段添加到列表?

作者:精品下载站 日期:2024-12-14 21:04:06 浏览:12 分类:玩电脑

SharePoint Online:如何使用 PowerShell 将地理位置(Bing 地图)字段添加到列表?


要求:添加地理位置字段以使用 SharePoint Online 中的 PowerShell 在列表中显示 Bing 地图。

如何将地理位置列添加到 SharePoint Online 列表?

通过地理位置字段,您可以输入一对纬度和经度坐标的位置信息,并将其显示在 Bing 地图中。那么,由于在 SharePoint UI 中找不到此列,如何在 SharePoint Online 中添加“地理位置”列?

嗯,地理位置列在 SharePoint 列表或 SharePoint UI 的网站列中不可用,但您必须编写代码来添加它!以下是启用 SharePoint Online 列表的 Bing 地图列的步骤:

第 1 步:获取 Bing 地图密钥

要启用 SharePoint Online 列表中的地理位置字段,我们必须首先获取 Bing 地图密钥。

  1. 转到 Bing 地图开发中心 https://www.bingmapsportal.com/ 并使用您的 Microsoft 帐户登录(或注册)。创建新的 Bing 地图帐户。
  2. 转至:我的帐户 >> 我的密钥。单击“创建新密钥”>>填写应用程序名称和密钥类型>>单击“创建”。您将立即在“可用密钥列表”中获得新密钥!

    [玩转系统] SharePoint Online:如何使用 PowerShell 将地理位置(Bing 地图)字段添加到列表?

步骤 2:将 Bing 地图密钥设置为 SharePoint Online

通过上述步骤获取 Bing 地图密钥后,您必须将其更新到您的 SharePoint Online 网站。使用此 PowerShell 将 Bing 地图s 键设置为 SharePoint Online。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
   
#Variables for Processing
$SiteURL="https://crescent.sharepoint.com"
$BingKey="AkDeSbNMX7oTm3jqv69D3Eq1hlN72sdUQ3PdnwbUWQmVo4a7QyH97P3IN2fA5AZb"

Try {
    #Get Credentials to connect
    $Cred = Get-Credential
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = $Credentials
 
    $Web = $Ctx.Web
    $Web.AllProperties['BING_MAPS_KEY'] = $BingKey
    $Web.Update()
    $Ctx.ExecuteQuery()
 
    Write-host "Bing Map Key Updated Successfully!" -ForegroundColor Green
 }
Catch {
    write-host -f Red "Error Updating Bing Map Key!" $_.Exception.Message
}

使用 PnP PowerShell 可以完成同样的事情:


#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$BingMapKey = "Your Bing Map Key"

#Connect to Site
Connect-PnPOnline -url $SiteURL -Interactive

#Set Bing Map Key
Set-PnPPropertyBagValue -Key "BING_MAPS_KEY" -Value $BingMapKey

步骤 3:将 Bing 地图地理位置列添加到 SharePoint Online 列表

由于 SharePoint UI 中不提供此列类型,因此我们使用 PowerShell 将地理位置列添加到列表中。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Custom function to add column to list
Function Add-GeolocationColumnToList()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $Name,
        [Parameter(Mandatory=$true)] [string] $DisplayName,
        [Parameter(Mandatory=$false)] [string] $Description=[string]::Empty
    )

    #Generate new GUID for Field ID
    $FieldID = New-Guid

    Try {
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials
        
        #Get the List
        $List = $Ctx.Web.Lists.GetByTitle($ListName)
        $Ctx.Load($List)
        $Ctx.ExecuteQuery()

        #Check if the column exists in list already
        $Fields = $List.Fields
        $Ctx.Load($Fields)
        $Ctx.executeQuery()
        $NewField = $Fields | where { ($_.Internalname -eq $Name) -or ($_.Title -eq $DisplayName) }
        if($NewField -ne $NULL)  
        {
            Write-host "Column $Name already exists in the List!" -f Yellow
        }
        else
        {
            #Create Column in the list
            $FieldSchema = "<Field Type='Geolocation' ID='{$FieldID}' DisplayName='$DisplayName' Name='$Name' Description='$Description'></Field>"
            $NewField = $List.Fields.AddFieldAsXml($FieldSchema,$True,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldInternalNameHint)
            $Ctx.ExecuteQuery()    
            
            Write-host "New Column Added to the List Successfully!" -ForegroundColor Green  
        }
    }
    Catch {
        write-host -f Red "Error Adding Column to List!" $_.Exception.Message
    }
} 

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$Name="ProjectLocation"
$DisplayName="Project Location"
$Description="Location of the Project"

#Call the function to add column to list
Add-GeolocationColumnToList -SiteURL $SiteURL -ListName $ListName -Name $Name -DisplayName $DisplayName -Description $Description

PnP PowerShell 将地理位置字段添加到列表


#Parameter
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName = "Metrics"
$FieldName = "Location"
 
Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
  
    #Get the List
    $List = Get-PnPList -Identity $ListName
    
    #Add Geolocation field to the List
    Add-PnPField -List $List -Type GeoLocation -DisplayName $FieldName -InternalName $FieldName -AddToDefaultView -AddToAllContentTypes

    Write-host "Bing Map Geolocation Field Added to the List!" -f Green
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

以下是 SharePoint Online 地理位置字段的结果:

[玩转系统] SharePoint Online:如何使用 PowerShell 将地理位置(Bing 地图)字段添加到列表?

我的另一篇文章中解释了将 Bing 地图与 SharePoint 本地部署结合使用:如何在 SharePoint 中添加 Bing 地图地理位置列?

提示:您可以创建“地图视图”以获得更好的可视化效果。地图视图使用“地理位置”字段类型中的经度和纬度条目显示地图(包含从 Bing 地图服务获取的数据)。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯