SharePoint — это мощная платформа для совместной работы, предоставляющая разработчикам различные API-интерфейсы для взаимодействия с ее данными. Одной из распространенных задач является добавление значений в поле подстановки с помощью REST API SharePoint. В этой статье блога мы рассмотрим различные способы достижения этой цели и предоставим вам примеры кода, которые помогут вам начать работу.
Метод 1. Непосредственное обновление идентификатора поля поиска
Самый простой способ добавить значение в поле поиска — напрямую обновить идентификатор поля поиска. Вот пример использования JavaScript и REST API SharePoint:
function addLookupValue(listName, itemId, lookupFieldName, lookupId) {
var endpointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('" + listName + "')/items(" + itemId + ")";
var itemPayload = {
"__metadata": { "type": "SP.Data." + listName + "ListItem" },
lookupFieldName + "Id": lookupId
};
$.ajax({
url: endpointUrl,
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(itemPayload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*",
"X-HTTP-Method": "MERGE"
},
success: function (data) {
console.log("Lookup value added successfully.");
},
error: function (error) {
console.log("Error adding lookup value: " + JSON.stringify(error));
}
});
}
Метод 2: использование конечной точки коллекции ListItem
Другой подход — использовать конечную точку коллекции ListItem и метод updateдля добавления значения в поле поиска. Вот пример использования C# и REST API SharePoint:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
client.DefaultRequestHeaders.Add("X-RequestDigest", requestDigest);
var endpointUrl = $"{webUrl}/_api/web/lists/getByTitle('{listName}')/items({itemId})";
var itemPayload = new
{
__metadata = new { type = $"SP.Data.{listName}ListItem" },
lookupFieldName = new[] { new { Id = lookupId } }
};
var itemPayloadJson = JsonConvert.SerializeObject(itemPayload);
var httpContent = new StringContent(itemPayloadJson, Encoding.UTF8, "application/json");
var requestUrl = new Uri(endpointUrl);
var requestMethod = new HttpMethod("MERGE");
var request = new HttpRequestMessage(requestMethod, requestUrl) { Content = httpContent };
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Lookup value added successfully.");
}
else
{
Console.WriteLine("Error adding lookup value: " + await response.Content.ReadAsStringAsync());
}
}
Метод 3: использование метода UpdateOverwriteVersion
Метод UpdateOverwriteVersion также можно использовать для добавления значения в поле подстановки. Вот пример использования PowerShell и REST API SharePoint:
$webUrl = "https://your-sharepoint-site.com"
$listTitle = "Your List Title"
$itemId = 1
$lookupFieldName = "Your Lookup Field Name"
$lookupId = 123
$endpointUrl = "$webUrl/_api/web/lists/getByTitle('$listTitle')/items($itemId)"
$itemPayload = @{
"__metadata" = @{
"type" = "SP.Data.$listTitleListItem"
}
$lookupFieldName = @{
"__metadata" = @{
"type" = "Collection(Edm.Int32)"
}
"results" = @($lookupId)
}
}
$payloadJson = $itemPayload | ConvertTo-Json -Depth 10
$headers = @{
"Accept" = "application/json;odata=verbose"
"Content-Type" = "application/json;odata=verbose"
"X-RequestDigest" = $digestValue
"X-HTTP-Method" = "MERGE"
"IF-MATCH" = "*"
}
$response = Invoke-RestMethod -Uri $endpointUrl -Method Post -Headers $headers -Body $payloadJson
if ($response)
{
Write-Host "Lookup value added successfully."
}
else
{
Write-Host "Error adding lookup value: $response"
}
В этой статье мы рассмотрели различные методы добавления значения в поле подстановки с помощью REST API SharePoint. Мы предоставили примеры кода на JavaScript, C# и PowerShell для демонстрации каждого подхода. Независимо от того, предпочитаете ли вы написание сценариев на стороне клиента или программирование на стороне сервера, эти методы должны помочь вам достичь цели повышения ценности поиска. Не забудьте изменить примеры кода в соответствии с вашей конкретной средой SharePoint.