Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Verwenden Sie das Power Apps SDK, um Ihre Code-App mit SharePoint zu verbinden, und verwenden Sie die generierten Modelle und Dienste, um CRUD-Vorgänge (Create, Read, Update, Delete) in einer SharePoint-Liste auszuführen.
Voraussetzungen
- Power Apps-Code-Apps-SDK @microsoft/power-apps - npm package
- Power Apps CLI (PAC CLI) Version 1.50 oder höher
- Sie müssen mit der PAC CLI mit der Umgebung verbunden sein.
Unterstützte Szenarien
Die folgenden Szenarien werden beim Herstellen einer Verbindung mit SharePoint mithilfe des Power Apps SDK unterstützt:
- Hinzufügen von SharePoint-Listen als Datenquellen mithilfe der PAC CLI
- Ausführen von CRUD-Vorgängen in einer SharePoint-Liste
- Mögliche Werte für Auswahl-, Nachschlage- oder Personen-/Gruppenspalten abrufen
Richten Sie Ihre Code-App ein
Bevor Sie CruD-Vorgänge (Create, Read, Update, Delete) in Ihrer Code-App ausführen, führen Sie diese Setupschritte aus.
Sicherstellen der Power Apps SDK-Initialisierung vor Datenaufrufen
Implementieren Sie in Ihrer App.tsx Datei Logik, die wartet, bis das Power Apps SDK vollständig initialisiert wird, bevor Datenvorgänge ausgeführt werden. Dieser Ansatz verhindert Fehler, die durch nicht initialisierte Dienste oder fehlenden Kontext verursacht werden.
Verwenden Sie eine asynchrone Funktion oder Zustandsverwaltung, um die Initialisierung zu bestätigen, bevor API-Aufrufe ausgeführt werden. Beispiel:
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
}, []);
Hinzufügen ihrer SharePoint-Datenquelle
Fügen Sie Ihre SharePoint-Datenquelle hinzu, indem Sie die Anweisungen in "Mit Daten verbinden" befolgen.
Importieren erforderlicher Typen und Dienste
Wenn Sie eine Datenquelle hinzufügen, werden Modell- und Dienstdateien automatisch generiert und im /generated/services/ Ordner platziert. Wenn Sie beispielsweise die ChoicesTest1 Liste hinzufügen, werden die folgenden Dateien erstellt:
-
ChoicesTest1Model.ts– Definiert das Datenmodell für die ChoicesTest1-Liste. -
ChoicesTest1Service.ts– Stellt Dienstmethoden für die Interaktion mit Daten in der ChoicesTest1-Liste bereit.
Sie können diese Dateien wie folgt in Ihrem App.tsx-Code importieren und verwenden:
import { ChoicesTest1Service } from './generated/services/ChoicesTest1Service';
import type { ChoicesTest1 } from './generated/models/ChoicesTest1Model';
Datensätze lesen
In diesem Beispiel werden alle Elemente abgerufen und der Zustand festgelegt.
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
}
};
In diesem Beispiel wird ein einzelner Datensatz gelesen.
const fetchOne = async (id: string) => {
const r = await ChoicesTest1Service.get(id);
if (r.data) {
// r.data is a single record typed as ChoicesTest1
}
};
Datensätze erstellen
Für die Beispiele in den folgenden Schritten sind ChoicesTest1die Beispieltypen aus der Modelldatei : , Choices1Value, personValueund lookupValue.
- Zuordnen ausgewählter IDs zu erweiterten Objekten
Hinweis
Generierte Modelle können interne Eigenschaftsnamen mit # (z. B.: Choices1#Id) enthalten, die für die Bindung in Formularen verwendet werden, aber nicht in die Nutzlast einbezogen werden, die an den SharePoint-Connector gesendet wird. Wenn Sie eine Zeile in Ihrer Liste aktualisieren oder erstellen, erwartet die SharePoint-API, dass Sie das erweiterte Objekt für referenzierte Spalten (Autor, Editor, Personen-/Gruppenspalten usw.) anstelle der IDs bereitstellen.
Weitere Informationen finden Sie in der SharePoint-API-Dokumentation .
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;
- Nutzlast erstellen und vorbereiten
Stellen Sie sicher, dass Sie die Eigenschaften, die # enthalten, auslassen. Fügen Sie bei den erweiterten Objekten für Auswahl, Nachschlagen und Personen bei Bedarf Inhaltstypinformationen hinzu. Verwenden Sie die generierten Modelltypen, um die Nutzlast zu erstellen.
// 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
}
Datensätze aktualisieren
Verwenden Sie update(id, payload) aus der generierten Dienstdatei. Stellen Sie beim Erstellen eines Datensatzes dieselben erweiterten Objekte bereit, die Sie auch sonst bereitstellen würden.
Beispiel:
const updatePayload = {
Title: updatedTitle,
Choices1: updatedChoices1Obj,
// ...
} as Partial<Omit<ChoicesTest1, "ID">>;
await ChoicesTest1Service.update(recordId, updatePayload);
Datensätze löschen
Stellen Sie sicher, dass recordId die Zeichenfolgen-ID ist, die der Dienst erwartet. Dies ist häufig eine numerische Element-ID, die in eine Zeichenfolge konvertiert wird.
await ChoicesTest1Service.delete(recordId);
Referenzierte Entitäten (Auswahlmöglichkeiten / Nachschlagemöglichkeiten / Person)
Um Dropdowns zu befüllen, rufen Sie getReferencedEntity() auf. SharePoint gibt immer ein Wertarray zurück, das Objekte aus der referenzierten Entität enthält. Möglicherweise möchten Sie die Antwort normalisieren, da einige Connectors eine Struktur im Format { value: [] }zurückgeben, während andere das Array direkt bereitstellen.
// 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 }));
Nicht unterstützte Szenarien
Das Power Apps SDK und die PAC CLI ermöglichen CRUD-Vorgänge in SharePoint-Listen, unterstützen jedoch keine Dokumentverarbeitungs-APIs oder Aktionen wie Elementsynchronisierung oder Berechtigungsänderungen. Sie können diese Features hinzufügen, indem Sie eine benutzerdefinierte Dienstdatei für Ihre Code-App erstellen.