Freigeben über


Referenzinformationen für die Besprechungsbildschirmvorlage für Canvas-Apps

Für Canvas-Apps in Power Apps lernen Sie, wie jedes wichtige Steuerelement in der Besprechungsbildschirmvorlage zur allgemeinen Standardfunktionalität des Bildschirms beiträgt. Diese Vertiefung zeigt die Verhaltensformeln und die Werte anderer Eigenschaften, die bestimmen, wie die Steuerelemente auf Benutzereingaben reagieren. Eine allgemeine Beschreibung der Standardfunktionen dieses Bildschirms finden Sie in der Besprechungsbildschirmübersicht.

Dieses Thema hebt einige wichtige Steuerelemente hervor und erklärt die Ausdrücke oder Formeln, denen verschiedene Eigenschaften (wie Element und OnSelect) dieser Steuerelemente eingestellt sind:

Voraussetzung

Vertrautheit mit dem Hinzufügen und Konfigurieren von Bildschirmen und anderen Steuerelementen Erstellen Sie eine App in Power Apps.

Registerkarte „Einladen“

LblInviteTab-Steuerelement

  • Eigenschaft: Color
    Wert: If( _showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails ist eine Variable, mit der bestimmt wird, ob das LblInviteTab-Steuerelement oder das LblScheduleTab-Steuerelement ausgewählt ist. Wenn der Wert von _showDetails true ist, ist LblScheduleTab ausgewählt; wenn der Wert false ist, ist LblInviteTab ausgewählt. Das heißt, wenn der Wert von _showDetails true ist (diese Registerkarte ist nicht ausgewählt), entspricht die Registerkartenfarbe der von LblRecipientCount. Andernfalls entspricht es dem Füllwert von RectQuickActionBar.

  • Eigenschaft OnSelect
    Wert: Set( _showDetails, false )

    Legt die Variable _showDetails auf false fest. Dies bedeutet, dass der Inhalt der Registerkarte „Einladen“ sichtbar und der Inhalt der Registerkarte Zeitplan ausgeblendet ist.

Registerkarte „Zeitplan“

Registerkarte „Zeitplan“

  • Eigenschaft: Color
    Wert: If( !_showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails ist eine Variable, mit der bestimmt wird, ob das LblInviteTab-Steuerelement oder das LblScheduleTab-Steuerelement ausgewählt ist. Bei „true“ ist LblScheduleTab ausgewählt; bei „false“ ist LblInviteTab ausgewählt. Das heißt, wenn der Wert von _showDetails „true“ ist (diese Registerkarte ist ausgewählt), entspricht die Registerkartenfarbe dem Füllwert von RectQuickActionBar. Andernfalls entspricht es dem Farbwert von LblRecipientCount.

  • Eigenschaft OnSelect
    Wert: Set( _showDetails, true )

    Legt die Variable _showDetails auf true fest. Dies bedeutet, dass der Inhalt der Registerkarte „Zeitplan“ sichtbar und der Inhalt der Registerkarte „Einladen“ ausgeblendet ist.

Textsuchfeld

TextSearchBox-Steuerelement

Einige andere Steuerelemente auf dem Bildschirm sind abhängig von diesem:

  • Wenn ein Benutzer anfängt, Text einzugeben, wird PeopleBrowseGallery angezeigt.
  • Wenn ein Benutzer eine gültige E-Mail-Adresse eingibt, wird AddIcon angezeigt.
  • Wenn ein Benutzer eine Person innerhalb von PeopleBrowseGallery auswählt, werden die Suchinhalte zurückgesetzt.

Symbol für „Hinzufügen“

AddIcon-Steuerelement

Mit diesem Steuerelement können Benutzer Personen, die nicht in ihrer Organisation vorhanden sind, zur Teilnehmerliste für die zu erstellende Besprechung hinzufügen.

  • Eigenschaft Visible
    Wert: Drei logische Prüfungen, die alle true auswerten müssen, damit das Steuerelement sichtbar ist:

    !IsBlank( TextSearchBox.Text ) &&
        IsMatch( TextSearchBox.Text, Match.Email ) &&
        Not( Trim( TextSearchBox.Text ) in MyPeople.UserPrincipalName )
    

    Zeile für Zeile sagt dieser Codeblock, dass das Steuerelement AddIcon nur sichtbar ist, wenn:

    • TextSearchBox Text enthält.
    • Der Text in TextSearchBox ist eine gültige E-Mail-Adresse.
    • Der Text in TextSearchBoxexistiert noch nicht in der Sammlung MyPeople.
  • Eigenschaft OnSelect
    Wert: Eine Sammeln-Anweisung zum Hinzufügen des Benutzers zur Teilnehmerliste, eine weitere zum Aktualisieren der verfügbaren Besprechungszeiten und mehrere Variablenumschalter:

    Collect( MyPeople,
        { 
            DisplayName: TextSearchBox.Text, 
            UserPrincipalName: TextSearchBox.Text, 
            Mail: TextSearchBox.Text
        }
    );
    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    { 
                        RequiredAttendees: Concat(MyPeople, UserPrincipalName & ";")
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ),
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage:1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Durch Auswahl dieses Steuerelements wird die gültige E-Mail-Adresse (nur sichtbar, wenn eine gültige E-Mail-Adresse in TextSearchBox eingegeben wird) zur MyPeople-Sammlung (diese Sammlung ist die Teilnehmerliste) hinzugefügt und aktualisiert dann die verfügbaren Besprechungszeiten mit dem neuen Benutzereintrag.

    Auf einer niedrigen Ebene führt dieser Codeblock Folgendes aus:

    1. Erfasst die E-Mail-Adresse in der MyPeople-Sammlung. Dabei wird die E-Mail-Adresse in den Feldern DisplayName, UserPrincipalName und Mail erfasst.
    2. Setzt den Inhalt von TextSearchBox zurück.
    3. Legt die _showMeetingTimes-Variable auf false fest. Diese Variable steuert die Sichtbarkeit von FindMeetingTimesGallery. Hier werden die Öffnungszeiten der ausgewählten Teilnehmer der Besprechung angezeigt.
    4. Legt die _loadMeetingTimes-Kontextvariable auf true fest. Diese Variable legt einen Ladestatus fest, der die Sichtbarkeit von Ladestatussteuerelementen wie _LblTimesEmptyState umschaltet, um dem Benutzer anzuzeigen, dass seine Daten geladen werden.
    5. Legt _selectedMeetingTime auf Blank() fest. _selectedMeetingTime ist der ausgewählte Datensatz aus dem FindMeetingTimesGallery-Steuerelement. Es wird hier ausgeblendet, da das Hinzufügen eines weiteren Teilnehmers bedeuten könnte, dass die vorherige Definition von _selectedMeetingTime für diesen Teilnehmer nicht verfügbar ist.
    6. Legt _selectedRoom auf Blank() fest. _selectedRoom ist der ausgewählte Raumdatensatz von RoomBrowseGallery. Die Raumverfügbarkeit ergibt sich aus dem Wert von _selectedMeetingTime. Wenn dieser Wert ausgeblendet ist, ist der Wert _selectedRoom nicht mehr gültig und muss daher ausgeblendet werden.
    7. Legt _roomListSelected auf false fest. Diese Zeile gilt möglicherweise nicht für alle. In Office können Sie Ihre Räume nach verschiedenen „Raumlisten“ gruppieren. Wenn Sie Raumlisten haben, wird dies in diesem Bildschirm berücksichtigt, sodass Sie zuerst eine Raumliste auswählen können, bevor Sie einen Raum aus dieser Liste auswählen. Der Wert von _roomListSelected legt hiermit fest, ob ein Benutzer (nur in einem Mandanten mit Raumlisten) Räume innerhalb einer Raumliste oder die Reihe von Raumlisten sieht. Es ist eingestellt auf false, um Benutzer zu zwingen, eine neue Raumliste erneut auszuwählen.
    8. Verwendet den Office365.FindMeetingTimes-Vorgang zum Ermitteln und Sammeln der verfügbaren Besprechungszeiten für die Teilnehmer. Dieser Vorgang übergibt:
      • UserPrincipalName jedes ausgewählten Benutzers in den RequiredAttendees-Parameter.
      • MeetingDurationSelect.Selected.Minutes in den MeetingDuration-Parameter.
      • MeetingDateSelect.SelectedDate + 8 hours in den Start-Parameter. Acht Stunden werden hinzugefügt, da das vollständige Datum/die vollständige Uhrzeit für das Kalender-Steuerelement standardmäßig 12:00 Uhr des ausgewählten Datums ist. Sie möchten wahrscheinlich die Verfügbarkeit innerhalb der normalen Arbeitszeit abrufen. Ein normaler Arbeitszeitbeginn wäre 8:00 Uhr.
      • MeetingDateSelect.SelectedDate + 17 hours in den End-Parameter. 17 Stunden werden hinzugefügt, da 12:00 Uhr + 17 = 17:00 Uhr. Ein normales Arbeitszeitende wäre 17:00 Uhr.
      • 15 in den MaxCandidates-Parameter. Dies bedeutet, dass der Vorgang nur die Top 15 verfügbaren Zeiten für das ausgewählte Datum zurückgibt. Dies ist sinnvoll, da an einem 8-Stunden-Arbeitstag nur 16 30-Minuten-Abschnitte vorhanden sind und in diesem Bildschirm mindestens eine 30-Minuten-Besprechung festgelegt werden kann.
      • 1 in den MinimumAttendeePercentage-Parameter. Im Wesentlichen wird die Besprechungszeit abgerufen, sofern keine Teilnehmer verfügbar sind.
      • false in den IsOrganizerOptional-Parameter. Der App-Benutzer ist kein optionaler Teilnehmer für dieses Meeting.
      • „Work“ in den ActivityDomain-Parameter. Dies bedeutet, dass die abgerufenen Zeiten nur innerhalb eines normalen Arbeitszeitraums liegen.
    9. Die ClearCollect-Funktion fügt außerdem zwei Spalten hinzu: StartTime und EndTime. Dies vereinfacht die zurückgegebenen Daten. Das Feld mit den verfügbaren Start- und Endzeiten ist das MeetingTimeSlot-Feld. Dieses Feld ist ein Datensatz, der die Start- und Enddatensätze enthält, die selbst die Werte DateTime und TimeZone ihres jeweiligen Vorschlags enthalten. Anstatt zu versuchen, diese Verschachtelung von Datensätzen abzurufen, werden durch das Hinzufügen der StartTime- und EndTime-Spalten zur MeetingTimes-Sammlung die Werte Start > DateTime und End > DateTime an die Oberfläche der Sammlung gebracht.
    10. Sobald alle diese Funktionen abgeschlossen sind, wird die _loadingMeetingTimes-Variable auf false festgelegt, der Ladestatus entfernt, _showMeetingTimes auf true festgelegt und FindMeetingTimesGallery angezeigt.

Katalog zum Durchsuchen von Mitarbeitern

PeopleBrowseGallery-Steuerelement

  • Eigenschaft: Items
    Wert:
    If( !IsBlank( Trim( TextSearchBox.Text ) ), 
        'Office365Users'.SearchUser( { searchTerm: Trim(TextSearchBox.Text), top: 15 } )
    )
    

Die Elemente dieses Katalogs werden mit Suchergebnissen aus dem Office365.SearchUser-Vorgang gefüllt. Der Vorgang nimmt den Text in Trim(**TextSearchBox**) als Suchbegriff auf und gibt die Top 15-Ergebnisse basierend auf dieser Suche zurück.

TextSearchBox ist eingebunden in einer Trim-Funktion, weil eine Benutzersuche nach Leerzeichen nicht gültig ist. Der Office365Users.SearchUser-Vorgang ist eingebunden in eine If(!IsBlank(Trim(TextSearchBox.Text)) ... )-Funktion, da das Abrufen von Suchergebnissen vor dem Suchen eines Benutzers eine Leistungsverschwendung darstellt.

Titel von Katalog zum Durchsuchen von Mitarbeitern

PeopleBrowseGallery-Titelsteuerung

  • Eigenschaft: Text
    Wert: ThisItem.DisplayName

    Zeigt den Anzeigenamen der Person aus ihrem Office 365-Profil an.

  • Eigenschaft OnSelect
    Wert: Eine Sammeln-Anweisung zum Hinzufügen des Benutzers zur Teilnehmerliste, eine weitere zum Aktualisieren der verfügbaren Besprechungszeiten und mehrere Variablenumschalter:

    Concurrent(
        Reset( TextSearchBox ),
        Set( _selectedUser, ThisItem ),
        If( Not( ThisItem.UserPrincipalName in MyPeople.UserPrincipalName ), 
            Collect( MyPeople, ThisItem ); 
            Concurrent(
                Set( _showMeetingTimes, false ),
                UpdateContext( { _loadMeetingTimes: true } ),
                Set( _selectedMeetingTime, Blank() ),
                Set( _selectedRoom, Blank() ),
                Set( _roomListSelected, false ),
                ClearCollect( MeetingTimes, 
                    AddColumns(
                        'Office365'.FindMeetingTimes(
                            {
                                RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ),
                                MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                                Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ),
                                End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                                MaxCandidates: 15, 
                                MinimumAttendeePercentage: 1, 
                                IsOrganizerOptional: false, 
                                ActivityDomain: "Work"
                            }
                        ).MeetingTimeSuggestions,
                        "StartTime", MeetingTimeSlot.Start.DateTime, 
                        "EndTime", MeetingTimeSlot.End.DateTime
                    )
                )
            );
            UpdateContext( { _loadingMeetingTimes: false } );
            Set( _showMeetingTimes, true )
        )
    )
    

    Allgemein wird durch die Auswahl dieses Steuerelements die Person zur MyPeople-Sammlung hinzugefügt (App-Speicher der Teilnehmerliste), und die verfügbaren Besprechungszeiten werden basierend auf dem neuen Benutzerzusatz aktualisiert.

    Die Auswahl dieses Steuerelements ist der Auswahl des AddIcon-Steuerelements sehr ähnlich. Der einzige Unterschied ist die Set(_selectedUser, ThisItem)-Anweisung und die Ausführungsreihenfolge der Vorgänge. Daher wird diese Diskussion nicht so tief gehen. Lesen Sie für eine ausführlichere Erklärung den Abschnitt AddIcon-Steuerelement.

    Durch Auswahl dieses Steuerelements wird TextSearchBox zurückgesetzt. Dann, wenn die Auswahl nicht in der MyPeople-Sammlung ist, führt das Steuerelement Folgendes aus:

    1. Legt den _loadMeetingTimes-Status auf true und den _showMeetingTimes-Status auf false fest, leert die Variablen _selectedMeetingTime und _selectedRoom und aktualisiert die MeetingTimes-Sammlung mit dem Neuzugang in der MyPeople-Sammlung.
    2. Legt den _loadMeetingTimes-Status auf false und den _showMeetingTimes-Status auf true fest. Wenn die Auswahl bereits in der MyPeople-Sammlung vorhanden ist, wird nur der Inhalt von TextSearchBox zurückgesetzt.

Katalog zur Besprechung mit Mitarbeitern

MeetingPeopleGallery-Steuerelement

  • Eigenschaft: Items
    Wert: MyPeople

    Die MyPeople-Sammlung ist die Sammlung von Personen, die durch Auswahl des PeopleBrowseGallery Title-Steuerelements initialisiert oder ergänzt wurden.

  • Eigenschaft: Height
    Wert: Logik, damit der Katalog auf eine maximale Höhe von 350 wachsen kann:

    Min( 
        76 * RoundUp( CountRows( MeetingPeopleGallery.AllItems ) / 2, 0 ),
        350
    )
    

    Die Höhe dieses Katalogs richtet sich nach der Anzahl der Elemente im Katalog bis zu einer maximalen Höhe von 350. Die Formel verwendet 76 als die Höhe einer einzelnen Zeile von MeetingPeopleGallery und multipliziert sie dann mit der Anzahl der Zeilen. Die WrapCount-Eigenschaft ist auf 2 festgelegt, daher ist die Anzahl der wahren Zeilen gleich RoundUp(CountRows(MeetingPeopleGallery.AllItems) / 2, 0).

  • Eigenschaft: ShowScrollbar
    Wert: MeetingPeopleGallery.Height >= 350

    Wenn die maximale Höhe des Katalogs erreicht ist (350), ist die Scrollleiste sichtbar.

Titel von Katalog zur Besprechung mit Mitarbeitern

MeetingPeopleGallery Title-Steuerelement

  • Eigenschaft OnSelect

    Wert: Set(_selectedUser, ThisItem)

    Legt die Variable _selectedUser auf das in MeetingPeopleGallery ausgewählte Element fest.

MeetingPeopleGallery iconRemove-Steuerelement

  • Eigenschaft OnSelect
    Wert: Eine Entfernen-Anweisung zum Entfernen des Benutzers aus der Teilnehmerliste, eine Sammeln-Anweisung zum Aktualisieren der verfügbaren Besprechungszeiten und mehrere Variablenumschalter:

    Remove( MyPeople, LookUp( MyPeople, UserPrincipalName = ThisItem.UserPrincipalName ) );
    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    {
                        RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ), 
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ), 
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage: 1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Allgemein wird durch Auswahl dieses Steuerelements die Person aus der Teilnehmerliste entfernt und die verfügbaren Besprechungszeiten basierend auf dem Entfernen dieser Person aktualisiert.

    Nach der ersten Zeile des vorhergehenden Codes ist die Auswahl dieses Steuerelements fast identisch mit der Auswahl des AddIcon-Steuerelements. Daher wird diese Diskussion nicht so tief gehen. Lesen Sie für eine ausführlichere Erklärung den Abschnitt AddIcon-Steuerelement.

    In der ersten Codezeile wird das ausgewählte Element aus der MyPeople-Sammlung entfernt. Der Code führt dann Folgendes aus:

    1. Setzt TextSearchBox zurück und entfernt dann die Auswahl aus der MyPeople-Sammlung.
    2. Legt den _loadMeetingTimes-Status auf true und den _showMeetingTimes-Status auf false fest, leert die Variablen _selectedMeetingTime und _selectedRoom und aktualisiert die MeetingTimes-Sammlung mit dem Neuzugang in der MyPeople-Sammlung.
    3. Legt den _loadMeetingTimes-Status auf false und den _showMeetingTimes-Status auf true fest.

Auswahl des Besprechungsdatums

MeetingDateSelect-Steuerelement

  • Eigenschaft: DisplayMode
    Wert: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Ein Termin für eine Besprechung kann erst ausgewählt werden, wenn mindestens ein Teilnehmer zur MyPeople-Sammlung hinzugefügt wurde.

  • Eigenschaft OnChange
    Wert: Select( MeetingDateSelect )

    Das Ändern des ausgewählten Datums löst den Code in der OnSelect-Eigenschaft dieses Steuerelements aus, um ausgeführt zu werden.

  • Eigenschaft OnSelect
    Wert: Eine Sammeln-Anweisung zum Aktualisieren der verfügbaren Besprechungszeiten und mehrere Variablenumschalter:

    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadingMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    {
                        RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ), 
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ), 
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage: 1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Allgemein werden durch Auswahl dieses Steuerelements die verfügbaren Besprechungszeiten aktualisiert. Dies ist hilfreich, da die verfügbaren Besprechungszeiten aktualisiert werden müssen, wenn ein Benutzer das Datum ändert, um die Verfügbarkeit der Teilnehmer für diesen Tag widerzuspiegeln.

    Mit Ausnahme der anfänglichen Sammeln-Anweisung ist dies mit der OnSelect-Funktionalität des AddIcon-Steuerelements identisch. Daher wird diese Diskussion nicht so tief gehen. Lesen Sie für eine ausführlichere Erklärung den Abschnitt AddIcon-Steuerelement.

    Durch Auswahl dieses Steuerelements wird TextSearchBox zurückgesetzt. Es wird dann Folgendes ausgeführt:

    1. Legt den _loadMeetingTimes-Status auf true und den _showMeetingTimes-Status auf false fest, leert die Variablen _selectedMeetingTime und _selectedRoom und aktualisiert die MeetingTimes-Sammlung mit der neuen Datumsauswahl.
    2. Legt den _loadMeetingTimes-Status auf false und den _showMeetingTimes-Status auf true fest.

MeetingDateSelect-Steuerelement – Dauer

  • Eigenschaft: DisplayMode
    Wert: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Eine Dauer für eine Besprechung kann erst ausgewählt werden, wenn mindestens ein Teilnehmer zur MyPeople-Sammlung hinzugefügt wurde.

  • Eigenschaft OnChange
    Wert: Select(MeetingDateSelect1)

    Das Ändern der ausgewählten Dauer löst den Code in der OnSelect-Eigenschaft des MeetingDateSelect-Steuerelements aus, um ausgeführt zu werden.

Katalog zum Suchen von Besprechungszeiten

FindMeetingTimesGallery-Steuerelement

  • Eigenschaft: Items
    Wert: MeetingTimes

    Die Sammlung potenzieller Besprechungszeiten aus dem Office365.FindMeetingTimes-Vorgang.

  • Eigenschaft Visible
    Wert: _showMeetingTimes && _showDetails && !IsEmpty( MyPeople )

    Der Katalog ist nur sichtbar, wenn _showMeetingTimes auf true festgelegt ist, der Benutzer das LblScheduleTab-Steuerelement ausgewählt hat und mindestens ein Teilnehmer zur Besprechung hinzugefügt wurde.

Titel von Katalog zum Suchen von Besprechungszeiten

FindMeetingTimesGallery Title-Steuerelement

  • Eigenschaft: Text
    Wert: Eine Konvertierung der Startzeit, die in der Ortszeit des Benutzers angezeigt werden soll:

    Text(
        DateAdd(
            DateTimeValue( ThisItem.StartTime ),
            - TimeZoneOffset(), 
            Minutes
        ),
        DateTimeFormat.ShortTime
    )
    

    Der abgerufene Wert von StartTime ist im UTC-Format. Zu Konvertierung von UTC in Ortszeit wird die DateAdd-Funktion angewendet. Die Text-Funktion nimmt ein Datum/eine Uhrzeit als erstes Argument und formatiert es basierend auf seinem zweiten Argument. Sie übergeben ihm die Ortszeitumrechnung von ThisItem.StartTime und zeigen es als DateTimeFormat.ShortTime an.

  • Eigenschaft OnSelect
    Wert: Mehrere Sammeln-Anweisungen zum Sammeln von Besprechungsräumen und deren empfohlenen Verfügbarkeiten sowie verschiedene variable Umschalter:

    Set( _selectedMeetingTime, ThisItem );
    UpdateContext( { _loadingRooms: true } );
    If( IsEmpty( RoomsLists ),
        ClearCollect( RoomsLists, 'Office365'.GetRoomLists().value) );
    If( CountRows( RoomsLists ) <= 1,
        Set( _noRoomLists, true );
        ClearCollect( AllRooms, 'Office365'.GetRooms().value );
        Set( _allRoomsConcat, Concat( FirstN( AllRooms, 20 ), Address & ";" ) );
        ClearCollect( RoomTimeSuggestions, 
            'Office365'.FindMeetingTimes(
                {
                    RequiredAttendees: _allRoomsConcat, 
                    MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                    Start: _selectedMeetingTime.StartTime & "Z", 
                    End: _selectedMeetingTime.EndTime & "Z", 
                    MinimumAttendeePercentage: "1",
                    IsOrganizerOptional: "false", 
                    ActivityDomain: "Unrestricted"
                }
            ).MeetingTimeSuggestions
        );
        ClearCollect( AvailableRooms, 
            AddColumns(
                AddColumns(
                    Filter( 
                        First( RoomTimeSuggestions ).AttendeeAvailability,
                        Availability="Free"
                    ), 
                    "Address", Attendee.EmailAddress.Address
                ), 
                "Name", LookUp( AllRooms, Address = Attendee.EmailAddress.Address ).Name 
            )
        );
        ClearCollect( AvailableRoomsOptimal, 
            DropColumns(
                DropColumns( AvailableRooms, "Availability" ), 
                "Attendee" 
            )
        ),
        Set( _roomListSelected, false) 
    );
    UpdateContext( {_loadingRooms: false} )
    

    Allgemein erfasst dieser Codeblock verfügbare Räume für Benutzer, die keine Raumlisten haben, basierend auf dem ausgewählten Datum/der ausgewählten Uhrzeit für die Besprechung. Andernfalls werden einfach die Raumlisten abgerufen.

    Auf einer niedrigen Ebene führt dieser Codeblock Folgendes aus:

    1. Legt _selectedMeetingTime auf das ausgewählte Element fest. Dies wird verwendet, um herauszufinden, welche Räume während dieser Zeit verfügbar sind.
    2. Legt die Ladestatusvariable _loadingRooms auf true fest und schaltet den Ladestatus ein.
    3. Wenn die RoomsLists-Sammlung leer ist, ruft die Raumlisten des Mandanten des Benutzers ab und speichert sie in der RoomsLists-Sammlung.
    4. Wenn der Benutzer keine Raumliste oder eine Raumliste hat:
      1. Die noRoomLists-Variable wird auf true festgelegt, und diese Variable wird verwendet, um die Elemente zu bestimmen, die im RoomBrowseGallery-Steuerelement angezeigt werden.
      2. Der Office365.GetRooms()-Vorgang wird verwendet, um die ersten 100 Räume in ihrem Mandanten abzurufen. Diese werden in der AllRooms-Sammlung gespeichert.
      3. Die _allRoomsConcat-Variable wird auf eine durch Semikolons getrennte Zeichenfolge der ersten 20 E-Mail-Adressen der Räume in der AllRooms-Sammlung festgelegt. Das liegt daran, dass Office365.FindMeetingTimes auf die Suche nach den verfügbaren Zeiten von 20 Personenobjekten in einem einzigen Vorgang beschränkt ist.
      4. Die RoomTimeSuggestions-Sammlung verwendet Office365.FindMeetingTimes, um die Verfügbarkeit der ersten 20 Räume in der AllRooms-Sammlung, basierend auf den Zeitwerten aus der _selectedMeetingTime-Variablen, abzurufen. Beachten Sie, dass & "Z" verwendet wird, um den Wert DateTime richtig zu formatieren.
      5. Die AvailableRooms-Sammlung wird erstellt. Das ist einfach die RoomTimeSuggestions-Sammlung von Teilnehmerverfügbarkeiten mit zwei zusätzlichen Spalten: Address und Name. Address ist die E-Mail-Adresse des Raums und Name ist der Name des Raums.
      6. Dann wird die AvailableRoomsOptimal-Sammlung erstellt. Dies ist nur die AvailableRooms-Sammlung mit den entfernten Spalten Availability und Attendee. Dies entspricht den Schemata von AvailableRoomsOptimal und AllRooms. Auf diese Weise können Sie beide Sammlungen in der Items-Eigenschaft von RoomBrowseGallery verwenden.
      7. _roomListSelected ist auf false festgelegt.
    5. Der Ladestatus, _loadingRooms, ist eingestellt auf false, sobald alles andere ausgeführt wurde.

Katalog zum Durchsuchen von Räumen

RoomBrowseGallery-Steuerelement

  • Eigenschaft: Items
    Wert: Wird logisch auf zwei interne Sammlungen mit identischem Schema festgelegt, je nachdem, ob der Benutzer eine Raumliste ausgewählt hat oder Raumlisten in seinem Mandanten hat:

    Search(
        If( _roomListSelected || _noRoomLists, AvailableRoomsOptimal, RoomsLists ),
        Trim(TextMeetingLocation1.Text), 
        "Name", 
        "Address"
    )
    

    Dieser Katalog zeigt die AvailableRoomsOptimal-Sammlung an, wenn _roomListSelected oder _noRoomLists ist true. Andernfalls wird die RoomsLists-Sammlung angezeigt. Dies ist möglich, da das Schema dieser Sammlungen identisch ist.

  • Eigenschaft Visible
    Wert: _showDetails && !IsBlank( _selectedMeetingTime ) && !_loadingRooms

    Der Katalog ist nur sichtbar, wenn die drei vorhergehenden Anweisungen true auswerten.

RoomBrowseGallery Title

RoomBrowseGallery Title-Titelsteuerung

  • Eigenschaft OnSelect
    Wert: Eine Reihe von logisch gebundenen Sammeln- und Festlegen-Anweisungen, die möglicherweise ausgelöst werden oder nicht, je nachdem, ob der Benutzer Raumlisten oder Räume anzeigt:

    UpdateContext( { _loadingRooms: true } );
    If( !_roomListSelected && !noRoomLists,
        Set( _roomListSelected, true );
        Set( _selectedRoomList, ThisItem.Name );
        ClearCollect( AllRooms, 'Office365'.GetRoomsInRoomList( ThisItem.Address ).value );
        Set( _allRoomsConcat, Concat( FirstN( AllRooms, 20 ), Address & ";" ) );
        ClearCollect( RoomTimeSuggestions, 
            'Office365'.FindMeetingTimes(
                {
                    RequiredAttendees: _allRoomsConcat, 
                    MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: _selectedMeetingTime.StartTime & "Z", 
                    End: _selectedMeetingTime.EndTime & "Z", 
                    MinimumAttendeePercentage: "1",
                    IsOrganizerOptional: "false", 
                    ActivityDomain: "Unrestricted"
                }
            ).MeetingTimeSuggestions
        );
        ClearCollect( AvailableRooms, 
            AddColumns(
                AddColumns(
                    Filter(
                        First( RoomTimeSuggestions ).AttendeeAvailability, 
                        Availability = "Free"
                    ),
                    "Address", Attendee.EmailAddress.Address 
                ), 
                "Name", LookUp( AllRooms, Address = Attendee.EmailAddress.Address ).Name
            )
        );
        ClearCollect( AvailableRoomsOptimal, 
            DropColumns(
                DropColumns( AvailableRooms, "Availability" )
            ), 
            "Attendee" )
        ),
        Set( _selectedRoom, ThisItem )
    );
    UpdateContext( {_loadingRooms: false} )
    

    Die Aktionen, die bei Auswahl dieses Steuerelements ausgeführt werden, hängen davon ab, ob ein Benutzer derzeit eine Reihe von Raumlisten oder eine Reihe von Räumen anzeigt. Wenn es das erstere ist, werden durch Auswahl dieses Steuerelements die zum ausgewählten Zeitpunkt verfügbaren Räume aus der ausgewählten Raumliste abgerufen. Wenn es das letztere ist, wird durch Auswahl dieses Steuerelements die _selectedRoom-Variable auf das ausgewählte Element festgelegt. Die vorherige Anweisung ist der Auswählen-Anweisung für FindMeetingTimesGallery Title sehr ähnlich.

    Auf einer niedrigen Ebene führt der vorherige Codeblock Folgendes aus:

    1. Schaltet den Ladestatus für die Räume durch Festlegen von _loadingRooms auf true ein.
    2. Überprüft, ob eine Raumliste ausgewählt wurde und ob der Mandant Raumlisten hat. Wenn ja:
      1. Legt _roomListSelected auf true und _selectedRoomList auf das ausgewählte Element fest.
      2. Die _allRoomsConcat-Variable wird auf eine durch Semikolons getrennte Zeichenfolge der ersten 20 E-Mail-Adressen der Räume in der AllRooms-Sammlung festgelegt. Das liegt daran, dass der Office365.FindMeetingTimes-Vorgang auf die Suche nach den verfügbaren Zeiten von 20 Personenobjekten in einem einzigen Vorgang beschränkt ist.
      3. Die RoomTimeSuggestions-Sammlung verwendet den Office365.FindMeetingTimes-Vorgang, um die Verfügbarkeit der ersten 20 Räume in der AllRooms-Sammlung, basierend auf den Zeitwerten aus der _selectedMeetingTime-Variablen, abzurufen. Beachten Sie, dass & "Z" verwendet wird, um den Wert DateTime richtig zu formatieren.
      4. Die AvailableRooms-Sammlung wird erstellt. Das ist einfach die RoomTimeSuggestions-Sammlung von Teilnehmerverfügbarkeiten mit zwei zusätzlichen Spalten: Address und Name. Address ist die E-Mail-Adresse des Raums und Name ist der Name des Raums.
      5. Dann wird die AvailableRoomsOptimal-Sammlung erstellt. Dies ist nur die AvailableRooms-Sammlung mit den entfernten Spalten Availability und Attendee. Dies entspricht den Schemata von AvailableRoomsOptimal und AllRooms. Auf diese Weise können Sie beide Sammlungen in der Items-Eigenschaft von RoomBrowseGallery verwenden.
      6. _roomListSelected ist auf false festgelegt.
    3. Der Ladestatus, _loadingRooms, ist eingestellt auf false, sobald alles andere ausgeführt wurde.

Zurück-Chevron

RoomsBackNav-Steuerelement

  • Eigenschaft Visible
    Wert: _roomListSelected && _showDetails

    Dieses Steuerelement ist nur sichtbar, wenn sowohl eine Raumliste als auch die Zeitplan-Registerkarte ausgewählt wurden.

  • Eigenschaft OnSelect
    Wert: Set( _roomListSelected, false )

    Wenn _roomListSelected auf false festgelegt ist, ändert es das RoomBrowseGallery-Steuerelement zum Anzeigen von Elementen aus der RoomsLists-Sammlung.

Symbol „Senden“

IconSendItem-Steuerelement

  • Eigenschaft: DisplayMode
    Wert: Logik, mit der der Benutzer gezwungen wird, bestimmte Besprechungsdetails einzugeben, bevor das Symbol bearbeitet werden kann.

    If( Len( Trim( TextMeetingSubject1.Text ) ) > 0
        && !IsEmpty( MyPeople ) && !IsBlank( _selectedMeetingTime ),
        DisplayMode.Edit, DisplayMode.Disabled
    )
    

    Das Symbol kann nur ausgewählt werden, wenn das Besprechungsthema ausgefüllt ist, mindestens ein Teilnehmer für die Besprechung vorhanden ist und eine Besprechungszeit ausgewählt wurde. Andernfalls ist es deaktiviert.

  • Eigenschaft OnSelect

    Wert: Code zum Senden der Besprechungseinladung an Ihre ausgewählten Teilnehmer und zum Löschen aller Eingabefelder:

    Set( _myCalendarName, LookUp( 'Office365'.CalendarGetTables().value, DisplayName = "Calendar" ).Name );
    Set( _myScheduledMeeting, 
        'Office365'.V2CalendarPostItem( _myCalendarName,
            TextMeetingSubject1.Text, 
            Text(DateAdd(DateTimeValue( _selectedMeetingTime.StartTime), -TimeZoneOffset(), Minutes) ),
            Text(DateAdd(DateTimeValue( _selectedMeetingTime.EndTime), -TimeZoneOffset(), Minutes) ),
            {
                RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ) & _selectedRoom.Address, 
                Body: TextMeetingMessage1.Text, 
                Location: _selectedRoom.Name, 
                Importance: "Normal", 
                ShowAs: "Busy", 
                ResponseRequested: true
            }
        )
    );
    Concurrent(
        Reset( TextMeetingLocation1 ),
        Reset( TextMeetingSubject1 ),
        Reset( TextMeetingMessage1 ),
        Clear( MyPeople ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoomList, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false )
    )
    

    Auf einer niedrigen Ebene führt dieser Codeblock Folgendes aus:

    1. Legt _myCalendarName auf den Kalender im Office365.CalendarGetTables()-Vorgang mit einem DisplayName von „Kalender“ fest.
    2. Plant die Besprechung mit allen Eingabewerten aus den verschiedenen Auswahlen, die der Benutzer auf dem Bildschirm mithilfe des Office365.V2CalendarPostItem-Vorgangs getroffen hat.
    3. Setzt alle Eingabefelder und Variablen zurück, die beim Erstellen der Besprechung verwendet wurden.

Hinweis

Abhängig von Ihrer Region verfügt der gewünschte Kalender möglicherweise nicht über den Anzeigename „Kalender“. Gehen Sie zu Outlook, um den Titel Ihres Kalenders zu sehen, und nehmen Sie die entsprechenden Änderungen in der App vor.

Nächste Schritte

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).