Ao excluir um item de lista referenciado por uma coluna de pesquisa no SharePoint, a coluna continua exibindo o item excluído. Esse comportamento causa confusão, pois os usuários veem entradas em um campo de pesquisa que não existem mais na lista de origem. A causa raiz é que as colunas de pesquisa do SharePoint armazenam uma referência estática ao ID do item, não uma consulta dinâmica à lista de origem. Este artigo explica por que itens excluídos aparecem em colunas de pesquisa e fornece um método passo a passo para removê-los.
Principais Conclusões: Removendo Itens Excluídos de Colunas de Pesquisa
- Comportamento da coluna de pesquisa: As colunas de pesquisa armazenam o ID do item; ao excluir o item de origem, a referência quebrada ainda aparece como opção.
- Script PowerShell (Remove-PnPListItem): Use o módulo SharePoint PnP PowerShell para remover todas as referências de pesquisa a um item excluído específico em listas.
- Ativação de recurso do conjunto de sites: Ative o recurso “Permitir campos de pesquisa que referenciam esta lista” para controlar se colunas de pesquisa podem direcionar uma lista.
Por Que Itens Excluídos Ainda Aparecem em Colunas de Pesquisa
Uma coluna de pesquisa no SharePoint não executa uma consulta dinâmica na lista de origem toda vez que a coluna é renderizada. Em vez disso, ao adicionar uma coluna de pesquisa a uma lista, o SharePoint cria um relacionamento oculto entre as duas listas. A coluna de pesquisa armazena o ID do item selecionado na lista de origem. Quando você exclui esse item de origem, a coluna de pesquisa mantém o ID. O SharePoint exibe o valor original no campo de pesquisa porque não encontra um item correspondente na lista de origem. Isso não é um bug; é o comportamento projetado dos relacionamentos de lista do SharePoint.
O problema se torna mais visível quando você usa uma coluna de pesquisa em um campo de escolha ou em uma exibição filtrada. Os usuários veem uma entrada que parece válida, mas leva a um link quebrado. A única maneira de remover o item excluído da coluna de pesquisa é excluir o valor de pesquisa de todos os itens que o referenciam. A remoção manual é demorada se a coluna de pesquisa for usada em centenas de itens. Um script PowerShell pode automatizar essa tarefa.
Método PowerShell para Remover Referências de Pesquisa Excluídas
As etapas a seguir usam o módulo SharePoint PnP PowerShell. Este módulo é gratuito e funciona com SharePoint Online e SharePoint 2019 local. Você precisa de permissões de administrador do SharePoint para executar o script.
Instalar e Conectar o Módulo PnP PowerShell
- Instalar o PnP PowerShell
Abra o Windows PowerShell como administrador. Execute o comandoInstall-Module PnP.PowerShell -Scope CurrentUser. Pressione Y para confirmar a instalação do PSGallery. - Conectar ao seu site do SharePoint
ExecuteConnect-PnPOnline -Url "https://sualocacao.sharepoint.com/sites/seosite" -Interactive. Uma janela do navegador será aberta. Faça login com uma conta de administrador do SharePoint.
Executar o Script para Remover Valores de Pesquisa Excluídos
- Identificar a lista de origem e o ID do item excluído
Vá para a lista de origem. Abra as configurações da lista e anote o título da lista. Se você não souber o ID do item excluído, executeGet-PnPListItem -List "NomeListaOrigem"para listar todos os itens atuais. - Executar o script de limpeza
Use o script a seguir. Substitua “NomeListaOrigem” pelo nome da lista de origem, “NomeListaDestino” pelo nome da lista que contém a coluna de pesquisa, “NomeColunaPesquisa” pelo nome interno da coluna de pesquisa e “IDItemExcluido” pelo ID do item excluído.$items = Get-PnPListItem -List "NomeListaDestino" -PageSize 500
foreach ($item in $items) {
if ($item["NomeColunaPesquisa"] -eq $IDItemExcluido) {
Set-PnPListItem -List "NomeListaDestino" -Identity $item.Id -Values @{"NomeColunaPesquisa" = $null}
}
}Este script percorre todos os itens na lista de destino. Para cada item onde a coluna de pesquisa é igual ao ID do item excluído, ele define o valor da pesquisa como nulo. A alteração remove a referência quebrada e o item excluído não aparece mais na coluna de pesquisa.
- Verificar o resultado
Abra a lista de destino no navegador. Clique em qualquer item que anteriormente exibia o item excluído. A coluna de pesquisa agora deve estar vazia. Se a coluna for obrigatória, você deve selecionar um item válido da lista de origem.
Se a Coluna de Pesquisa Ainda Exibir Itens Excluídos Após o Script
O script acima remove o valor de pesquisa de todos os itens na lista de destino. Se o item excluído ainda aparecer, um dos cenários a seguir se aplica.
A Coluna de Pesquisa Referencia uma Lista Diferente da Esperada
Uma coluna de pesquisa pode referenciar qualquer lista no mesmo site. A lista de origem pode não ser a que você pensa. Verifique as configurações da coluna de pesquisa. Vá para as configurações da lista de destino, selecione a coluna de pesquisa e observe o campo “Obter informações de”. Essa é a lista de origem real. Execute o script com o nome correto da lista de origem.
O Item Excluído Está na Lixeira do Conjunto de Sites
Ao excluir um item de uma lista, o SharePoint o move para a lixeira do conjunto de sites. O item é excluído temporariamente. A coluna de pesquisa ainda vê o ID do item porque ele ainda existe na lixeira. Para remover a referência permanentemente, exclua o item da lixeira. Vá para a lista de origem, clique no ícone de engrenagem, selecione “Conteúdo do site” e abra a “Lixeira do conjunto de sites” no menu superior. Encontre o item excluído, selecione-o e clique em “Excluir seleção”. Depois disso, execute o script PowerShell novamente.
A Coluna de Pesquisa Usa Múltiplos Valores
Uma coluna de pesquisa configurada para permitir múltiplos valores armazena uma matriz de IDs de itens. O script acima verifica uma correspondência exata. Se a coluna de pesquisa contiver vários IDs e apenas um deles for o item excluído, o script define toda a coluna como nula. Para preservar outros valores, você precisa de um script mais avançado que filtre a matriz. Use a seguinte modificação:
$items = Get-PnPListItem -List "NomeListaDestino" -PageSize 500
foreach ($item in $items) {
$lookupValues = $item["NomeColunaPesquisa"]
if ($lookupValues -is [array] -and $lookupValues -contains $IDItemExcluido) {
$newValues = $lookupValues | Where-Object { $_ -ne $IDItemExcluido }
Set-PnPListItem -List "NomeListaDestino" -Identity $item.Id -Values @{"NomeColunaPesquisa" = $newValues}
}
}
Medidas Preventivas para Colunas de Pesquisa
Você não pode impedir que usuários excluam itens na lista de origem. Mas pode reduzir o impacto de referências de pesquisa quebradas usando as seguintes práticas.
Usar uma Lista de Origem de Pesquisa Dedicada
Crie uma lista separada que contenha apenas os valores usados pelas colunas de pesquisa. Restrinja as permissões nessa lista para que apenas proprietários do site possam adicionar ou excluir itens. Isso reduz a chance de um usuário excluir acidentalmente um item referenciado.
Habilitar Comportamento de Relacionamento
Os relacionamentos de lista do SharePoint podem impor integridade referencial. Nas configurações da lista de origem, em “Configurações avançadas”, ative “Permitir campos de pesquisa que referenciam esta lista”. Em seguida, defina “Impor comportamento de relacionamento” como “Exclusão em cascata”. Ao excluir um item da lista de origem, o SharePoint exclui automaticamente todos os itens relacionados na lista de destino. Esta opção está disponível apenas para listas no mesmo conjunto de sites. Cuidado: a exclusão em cascata remove itens de lista inteiros, não apenas o valor de pesquisa. Teste esse comportamento em uma cópia dos seus dados primeiro.
Limpeza Manual vs. Automatizada com PowerShell: Principais Diferenças
| Item | Limpeza Manual | Limpeza Automatizada (PowerShell) |
|---|---|---|
| Tempo necessário | Várias horas para centenas de itens | Minutos para milhares de itens |
| Risco de erro | Alto — erro humano ao selecionar itens errados | Baixo — o script visa o ID exato do item |
| Habilidade necessária | Nenhuma | Conhecimento básico de PowerShell |
| Suporte a múltiplos valores | Edição manual de cada item | Script com filtragem de matriz |
| Tratamento da lixeira | O usuário deve verificar a lixeira manualmente | O script não verifica a lixeira |
Agora você pode remover itens excluídos de colunas de pesquisa usando PowerShell. Execute o script após verificar a lista de origem e o ID do item excluído. Para prevenção contínua, ative a exclusão em cascata na lista de origem ou restrinja as permissões na lista de origem da pesquisa. Se precisar lidar com colunas de pesquisa de múltiplos valores, use o script de filtragem de matriz fornecido neste artigo.