Compartilhar via


Como: operações do SharePoint (versão prévia)

Use o SDK do Power Apps para conectar seu aplicativo de código ao SharePoint e usar os modelos e serviços gerados para executar operações CRUD (Criar, Ler, Atualizar, Excluir) em uma lista do SharePoint.

Pré-requisitos

Cenários com suporte

Há suporte para os seguintes cenários ao se conectar ao SharePoint usando o SDK do Power Apps:

  • Adicionar listas do SharePoint como fontes de dados usando a CLI do PAC
  • Executar operações CRUD em uma lista do SharePoint
  • Obter valores possíveis para colunas de escolha, consulta ou pessoa/grupo

Configurar seu aplicativo de código

Antes de executar operações CRUD (criar, ler, atualizar e excluir) em seu aplicativo de código, conclua estas etapas de instalação.

Garantir a inicialização do SDK do Power Apps antes das chamadas de dados

Em seu App.tsx arquivo, implemente a lógica que aguarda que o SDK do Power Apps seja totalmente inicializado antes de executar quaisquer operações de dados. Essa abordagem evita erros causados por serviços não inicializados ou contexto ausente.

Use uma função assíncrona ou gerenciamento de estado para confirmar a inicialização antes de fazer chamadas à API. Por exemplo:

useEffect(() => { 
// Define an async function to initialize the Power Apps SDK 
const init = async () => { 
      try { 
            await initialize(); // Wait for SDK initialization 
            setIsInitialized(true); // Mark the app as ready for data operations 
      } catch (err) { 
            setError('Failed to initialize Power Apps SDK'); // Handle initialization errors 
            setLoading(false); // Stop any loading indicators 
      } 
};

init(); // Call the initialization function when the component mounts 
}, []); 
 
useEffect(() => { 
// Prevent data operations until the SDK is fully initialized 
if (!isInitialized) return; 
 
// Place your data reading logic here 
}, []); 

Adicionar sua fonte de dados do SharePoint

Adicione sua fonte de dados do SharePoint seguindo as instruções em Conectar-se aos dados.

Importar tipos e serviços necessários

Quando você adiciona uma fonte de dados, os arquivos de modelo e de serviço são gerados e colocados automaticamente na /generated/services/ pasta. Por exemplo, se você adicionar a ChoicesTest1 lista, os seguintes arquivos serão criados:

  • ChoicesTest1Model.ts – Define o modelo de dados para a lista ChoicesTest1.
  • ChoicesTest1Service.ts – Fornece métodos de serviço para interagir com dados na lista ChoicesTest1.

Você pode importar e usar esses arquivos em seu código App.tsx da seguinte maneira:

import { ChoicesTest1Service } from './generated/services/ChoicesTest1Service'; 
import type { ChoicesTest1 } from './generated/models/ChoicesTest1Model'; 

Ler registros

Este exemplo busca todos os itens e define o estado.

const loadRecords = async () => { 
  try { 
    const result = await ChoicesTest1Service.getAll(); 
    if (result.data) { 
      setRecords(result.data); // result.data is T[] 
    } else { 
      // handle empty or error 
    } 
  } catch (err) { 
    // handle error 
  } 
}; 

Este exemplo lê um único registro.

const fetchOne = async (id: string) => { 
  const r = await ChoicesTest1Service.get(id); 
  if (r.data) { 
    // r.data is a single record typed as ChoicesTest1 
  } 
}; 

Criar registros

Para os exemplos nas etapas a seguir, os tipos de exemplo do arquivo de modelo são ChoicesTest1, e Choices1ValuepersonValuelookupValue.

  1. Mapear identificadores selecionados para objetos expandidos

Observação

Os modelos gerados podem incluir nomes de propriedades internas com # (por exemplo: Choices1#Id) que são usados para associação em formulários, mas não devem ser incluídos no conteúdo enviado para o conector do SharePoint. Quando você atualiza ou cria uma linha em sua lista, a API do SharePoint espera que você forneça o objeto expandido para colunas referenciadas (autor, editor, colunas de pessoa/grupo e assim por diante) em vez de apenas as IDs. Consulte a documentação da API do SharePoint para obter mais informações.

const choices1Obj = selectedChoices1Id 
? choices1Options.find(c => c.Id === selectedChoices1Id) 
: undefined; 
const personObj = selectedPersonClaims 
? personOptions.find(p => p.Claims === selectedPersonClaims) 
: undefined; 
const lookupObj = selectedLookupId 
? lookupOptions.find(l => l.Id === selectedLookupId) 
: undefined; 
  1. Compilar conteúdo e criar

Certifique-se de omitir as propriedades contendo #, incluir objetos expandidos para opções, pesquisas e pessoas, e, se necessário, adicionar informações de tipo de conteúdo. Use os tipos de modelo gerados para ajudar a criar a carga útil.

// Content type (example static sample; retrieve dynamically if needed) 
const contentTypeId = "0x0100..."; // replace with your content type id 

const payload = { 
Title: titleValue, 
Choices1: choices1Obj, 
Choices2: choices2Obj, 
Choices3: choices3Obj, 
person: personObj, 
yesno: yesnoBoolean, 
lookup: lookupObj,
"{ContentType}": { 
   "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedContentType",
   Id: contentTypeId, 
   Name: "Item" 
} 
} as Partial<Omit<ChoicesTest1, "ID">>; 

// create 
const created = await ChoicesTest1Service.create(payload as Omit<ChoicesTest1, "ID">); 
if (created.data) { 
// success 
} 

Atualizar registros

Use update(id, payload) do arquivo de serviço gerado. Forneça os mesmos objetos expandidos que você faria ao criar um registro.

Por exemplo:

const updatePayload = { 
  Title: updatedTitle, 
  Choices1: updatedChoices1Obj, 
  // ... 
} as Partial<Omit<ChoicesTest1, "ID">>; 

await ChoicesTest1Service.update(recordId, updatePayload); 

Excluir registros

Verifique se recordId é a ID da cadeia de caracteres que o serviço espera. Geralmente, essa é uma ID de item numérico convertida em cadeia de caracteres.

await ChoicesTest1Service.delete(recordId); 

Entidades referenciadas (Opções/Pesquisa/Pessoa)

Para preencher listas suspensas, chame getReferencedEntity(). O SharePoint sempre retorna uma matriz de valor que contém objetos da entidade referenciada. Talvez você queira normalizar a resposta, pois alguns conectores retornam uma estrutura no formato { value: [] }, enquanto outros fornecem a matriz diretamente.

// The first parameter is a search term, the second is the referenced entity name 
const res = await ChoicesTest1Service.getReferencedEntity("", "Choices1"); 
// normalize: 
const dataArray = (res.data as { value?: any[] })?.value || res.data; 
const options = Array.isArray(dataArray) ? dataArray : []; 
// map to select options: 
const selectOpts = options.map(o => ({ id: o.Id, label: o.Value })); 

Cenários sem suporte

O SDK do Power Apps e a CLI do PAC permitem operações CRUD em listas do SharePoint, mas não dão suporte a APIs de Processamento de Documentos ou ações como sincronização de itens ou alterações de permissão. Você pode adicionar esses recursos criando um arquivo de serviço personalizado para seu aplicativo de código.