Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Use el SDK de Power Apps para conectar la aplicación de código a SharePoint y use los modelos y servicios generados para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en una lista de SharePoint.
Prerrequisitos
- SDK de aplicaciones de código de Power Apps @microsoft/power-apps: paquete npm
- CLI de Power Apps (CLI de PAC) versión 1.50 o posterior
- Debe estar conectado al entorno mediante la CLI de PAC.
Escenarios admitidos
Se admiten los escenarios siguientes al conectarse a SharePoint mediante el SDK de Power Apps:
- Agregar listas de SharePoint como orígenes de datos mediante la CLI de PAC
- Realizar operaciones CRUD en una lista de SharePoint
- Obtención de valores posibles para columnas de elección, búsqueda o persona o grupo
Configura tu aplicación de codificación
Antes de realizar operaciones de creación, lectura, actualización y eliminación (CRUD) en la aplicación de código, complete estos pasos de configuración.
Asegúrese de que el SDK de Power Apps esté inicializado antes de realizar llamadas a datos.
En el App.tsx archivo, implemente lógica que espere a que el SDK de Power Apps se inicialice completamente antes de realizar operaciones de datos. Este enfoque evita errores causados por servicios no inicializados o contexto que falta.
Use una función asincrónica o una administración de estado para confirmar la inicialización antes de realizar llamadas API. Por ejemplo:
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
}, []);
Agregar el origen de datos de SharePoint
Agregue el origen de datos de SharePoint siguiendo las instrucciones de Conexión a datos.
Importación de tipos y servicios necesarios
Al agregar un origen de datos, los archivos de modelo y servicio se generan y colocan automáticamente en la /generated/services/ carpeta . Por ejemplo, si agrega la ChoicesTest1 lista, se crean los siguientes archivos:
-
ChoicesTest1Model.ts: define el modelo de datos para la lista ChoicesTest1. -
ChoicesTest1Service.ts: proporciona métodos de servicio para interactuar con los datos en la lista ChoicesTest1.
Puede importar y usar estos archivos en el código App.tsx de la siguiente manera:
import { ChoicesTest1Service } from './generated/services/ChoicesTest1Service';
import type { ChoicesTest1 } from './generated/models/ChoicesTest1Model';
Leer registros
En este ejemplo se capturan todos los elementos y se establece el 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
}
};
En este ejemplo se lee un ú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
}
};
Crear registros
Para los ejemplos de los pasos siguientes, los tipos de ejemplo del archivo de modelo son ChoicesTest1, Choices1Value, personValuey lookupValue.
- Asignar identificadores seleccionados a objetos expandidos
Nota:
Los modelos generados pueden incluir nombres de propiedad internos con # (por ejemplo: Choices1#Id) que se usan para enlazar en formularios, pero que no deben incluirse en la carga enviada al conector de SharePoint. Al actualizar o crear una fila en la lista, la API de SharePoint espera que proporcione el objeto expandido para las columnas a las que se hace referencia (autor, editor, columnas de persona o grupo, etc.) en lugar de solo los identificadores.
Consulte la documentación de la API de SharePoint para obtener más información.
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;
- Compilación de carga y creación
Asegúrese de omitir las propiedades que contienen #, incluya objetos expandidos para elegir, búsquedas y personas y agregue información de tipo de contenido si es necesario. Use los tipos de modelo generados para ayudar a crear la 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
}
Actualizar registros
Use update(id, payload) desde el archivo de servicio generado. Proporcione los mismos objetos expandidos que al crear un registro.
Por ejemplo:
const updatePayload = {
Title: updatedTitle,
Choices1: updatedChoices1Obj,
// ...
} as Partial<Omit<ChoicesTest1, "ID">>;
await ChoicesTest1Service.update(recordId, updatePayload);
Eliminar registros
Asegúrese recordId de que es el identificador de cadena que espera el servicio. Suele ser un identificador de elemento numérico convertido en cadena.
await ChoicesTest1Service.delete(recordId);
Entidades a las que se hace referencia (Opciones/ Búsqueda/Persona)
Para rellenar las listas desplegables, llame a getReferencedEntity(). SharePoint siempre devuelve una matriz de valores que contiene objetos de la entidad a la que se hace referencia. Es posible que desee normalizar la respuesta, ya que algunos conectores devuelven una estructura con el formato { value: [] }, mientras que otros proporcionan la matriz directamente.
// 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 }));
Escenarios no soportados
El SDK de Power Apps y la CLI de PAC permiten operaciones CRUD en listas de SharePoint, pero no admiten API de procesamiento de documentos ni acciones como la sincronización de elementos o los cambios de permisos. Puede agregar estas características mediante la creación de un archivo de servicio personalizado para la aplicación de código.