Partekatu bidez


Cómo: operaciones de SharePoint (versión preliminar)

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

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.

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.

  1. 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; 
    
  2. 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.