誰でもこれを行う方法を教えてもらえますか? 私が見つけた例はどれもうまくいかないようです。
私のサイトはhttps://blah.sharepoint.com/technologyで、私のリストは「pfa」と呼ばれています。テキスト列を追加したい。
さまざまなコマンドからいくつかの結果を取得できたため、Powershell を介して SharePoint Online に接続できます。
ありがとう。
誰でもこれを行う方法を教えてもらえますか? 私が見つけた例はどれもうまくいかないようです。
私のサイトはhttps://blah.sharepoint.com/technologyで、私のリストは「pfa」と呼ばれています。テキスト列を追加したい。
さまざまなコマンドからいくつかの結果を取得できたため、Powershell を介して SharePoint Online に接続できます。
ありがとう。
CSOM API には以下が付属しています。
リストまたはサイト列を追加します。
次の例は、リストにGeoLocation
フィールドを追加する方法を示しています。Contacts
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
function Provision-Field([Microsoft.SharePoint.Client.ClientContext]$Context,[string]$ListTitle,[string]$FieldSchema)
{
$list = $Context.Web.Lists.GetByTitle($ListTitle)
$List.Fields.AddFieldAsXml($FieldSchema,$true,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView)
$Context.Load($List)
$Context.ExecuteQuery()
}
$UserName = "username@contoso.onmicrosoft.com"
$Password = Read-Host -Prompt "Please enter your password" -AsSecureString
$URL = "https://contoso.sharepoint.com/"
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($URL)
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,$Password)
$Context.Credentials = $Credentials
Provision-Field $Context "Contacts" "<Field Type='Geolocation' DisplayName='Location'/>"
エンドポイント:
http://<site url>/_api/web/fields('<field id>')
http://<site url>/_api/web/lists(guid'<list id>')/fields('<field id>')
記事「PowerShell から SharePoint 2013 REST API を使用する」では、HTTPS 要求を SharePoint REST Web サービスに送信する方法について説明しています。
次の例は、記事のInvoke-RestSPO関数を使用して、PowerShell で REST API を使用して Note フィールドを List に追加する方法を示しています。
Function Add-SPOField(){
Param(
[Parameter(Mandatory=$True)]
[String]$WebUrl,
[Parameter(Mandatory=$True)]
[String]$UserName,
[Parameter(Mandatory=$False)]
[String]$Password,
[Parameter(Mandatory=$True)]
[String]$ListTitle,
[Parameter(Mandatory=$True)]
[String]$FieldTitle,
[Parameter(Mandatory=$True)]
[System.Int32]$FieldType
)
$fieldMetadata = @{
__metadata = @{'type' = 'SP.Field' };
Title = $FieldTitle;
FieldTypeKind = $FieldType;
} | ConvertTo-Json
$Url = $WebUrl + "_api/web/Lists/GetByTitle('" + $ListTitle + "')/fields"
$contextInfo = Get-SPOContextInfo $WebUrl $UserName $Password
Invoke-RestSPO $Url Post $UserName $Password $fieldMetadata $contextInfo.GetContextWebInformation.FormDigestValue
}
. ".\Invoke-RestSPO.ps1" #InInvoke-RestSPO function
$UserName = "username@contoso.onmicrosoft.com"
$Password = Read-Host -Prompt "Please enter your password"
$WebUrl = "https://contoso.sharepoint.com/"
Add-SPOField -WebUrl $WebUrl -UserName $UserName -Password $Password -ListTitle "Documents" -FieldTitle "Comments" -FieldType 3