Spring til indholdet

Saml personerne fra et personfelt med flere værdier i Power Apps

Et personfelt, der tillader flere personer, giver en tabel inde i en tabel. Sådan folder jeg den ud til én flad collection med to ForAll.

Opdateret Power AppsSharePoint Online 1 min. læsning

Et personfelt i SharePoint, der tillader flere personer, kommer ind i Power Apps som en tabel i hver række. Filtrerer jeg listen, får jeg altså en tabel af tabeller. Skal personerne bruges som én almindelig liste, folder jeg dem ud i en collection med to ForAll inde i hinanden.

ClearCollect(varApproverTable,Filter(<Liste>,URL = varURL).Approver);
Clear(varApproversCollection);
ForAll(
    varApproverTable,
        ForAll(
        ThisRecord.Approver,
        Collect(varApproversCollection,
            {
            DisplayName: ThisRecord.DisplayName,
            Claims: ThisRecord.Claims,
            Department: ThisRecord.Department,
            Email: ThisRecord.Email,
            JobTitle: ThisRecord.JobTitle,
            Picture: ThisRecord.Picture
            }
        )
    )
);

Sådan virker det#

  1. ClearCollect henter kolonnen Approver fra de rækker, der matcher varURL. Hver række i varApproverTable har altså sin egen tabel af personer.
  2. Clear tømmer den collection, personerne skal ende i.
  3. Den ydre ForAll går rækkerne igennem, den indre går personerne i rækkens Approver igennem, og Collect lægger én post pr. person i varApproversCollection.

Det der driller#

  • ThisRecord skifter betydning undervejs. I ForAll(ThisRecord.Approver, ...) er det rækken fra den ydre løkke. Inde i Collect er det personen. Løkkerne kan navngives med As, hvis det skal være tydeligt.
  • var-navnene er collections, ikke variabler. Navnene er mine egne, og de snyder.

Alle noter