キャンバス アプリのメール スクリーン テンプレートに関する参照情報

Power Apps でのキャンバス アプリの場合、電子メール画面テンプレートの重要な各コントロールがスクリーン全体の既定機能にどのように貢献するかを理解します。 この詳細は、動作の数式およびコントロールがユーザー入力にどのように応答するかを決定する他のプロパティの値を表示します。 このスクリーン既定機能の概要については、電子メール画面の概要を参照してください。

このトピックは、一部の重要なコントロールに注目し、それらのコントロールのさまざまなプロパティ (Items および OnSelect など) に設定する式または数式ついて説明しています。

前提条件

Power Apps でアプリを作成する ときに、画面およびその他のコントロールの追加および構成を行う方法に関する知識。

TextSearchBox コントロール。

画面の他のいくつかのコントロールは、テキスト検索ボックス コントロールで依存関係があります。

  • ユーザーがテキストの入力を開始すると、PeopleBrowseGallery が表示されます。
  • ユーザーが有効な電子メール アドレスを入力すると、AddIcon が表示されます。
  • ユーザーが PeopleBrowseGallery 内のユーザーを選択すると、検索内容はリセットされます。

追加アイコン

AddIcon コントロール。

追加アイコン コントロールを使用すると、アプリ ユーザーは組織内に存在しないユーザーを作成中の受信者リストに追加できます。

  • プロパティ: Visible
    値: ユーザーが有効な電子メール アドレスを検索ボックスに入力したときにのみコントロールを表示するロジック。

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

    行ごとに、前述のコード ブロックは、追加アイコン コントロールは以下の場合にのみ表示されると示しています。

    • TextSearchBox にテキストが含まれています。
    • TextSearchBox のテキストは、有効なメール アドレスです。
    • TextSearchBox のテキストは、MyPeople コレクションにまだ存在していません。
  • プロパティ: OnSelect
    値: これを選択すると、有効な電子メール アドレスが MyPeople コレクションに追加されます。 このコレクションは、画面で受信者リストとして使用されます。

    Collect( MyPeople,
        { 
            DisplayName: TextSearchBox.Text, 
            UserPrincipalName: TextSearchBox.Text, 
            Mail: TextSearchBox.Text
        }
    );
    Reset( TextSearchBox )
    

    このコード ブロックは、行を MyPeople コレクションに追加し、3 つのフィールドに TextSearchBox のテキストを入力します。 これらの 3 つのフィールドは、DisplayNameUserPrincipalName、および Mail です。 次に、TextSearchBox の内容をリセットします。

PeopleBrowseGallery コントロール。

  • プロパティ: アイテム
    値: TextSearchBox コントロールに入力された検索テキストの上位 15 件の検索結果。

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

    このギャラリーのアイテムは、Office365.SearchUser 操作からの検索結果により設定されます。 操作は、検索語句として Trim(TextSearchBox) のテキストを受け取り、その検索に基づいて上位 15 件の結果を戻します。

    TextSearchBox は、スペースでのユーザー検索が無効であるため、Trim() 関数に囲われています。 Office365Users.SearchUser の操作は、If(!IsBlank(Trim(TextSearchBox.Text)) ... ) 関数でラップされています。つまり、検索ボックスにユーザーが入力したテキストが含まれている場合のみ操作が実行されます。 これにより、パフォーマンスが向上します。

PeopleBrowseGallery Title コントロール。

  • プロパティ: テキスト
    値: ThisItem.DisplayName

    ユーザーの表示名を Office 365 プロフィールから表示します。

  • プロパティ: OnSelect
    値: ユーザーをアプリ レベルのコレクションに追加し、ユーザーを選択するコード。

    Concurrent(
        Set( _selectedUser, ThisItem ),
        Reset( TextSearchBox ),
        If( Not( ThisItem.UserPrincipalName in MyPeople.UserPrincipalName ), 
            Collect( MyPeople, ThisItem )
        )
    )
    

このコントロールの選択により、3 つのことが同時に実行されます。

  • _selectedUser 変数を、選択した項目に設定します。
  • TextSearchBox の検索語句をリセットします。
  • MyPeople コレクションに選択した項目を追加します。これは、電子メール画面が受信者のセットとして使用する、選択したすべてのユーザーのコレクションです。

EmailPeopleGallery コントロール。

  • プロパティ: アイテム
    値: MyPeople

    これは、PeopleBrowseGallery タイトル コントロールを選択して、初期化または追加されたユーザーのコレクションです。

  • プロパティ: Height
    値: 現在ギャラリーにあるアイテムの数に基づいて高さを設定するロジック。

    Min( 
        ( EmailPeopleGallery.TemplateHeight + EmailPeopleGallery.TemplatePadding * 2) *
            RoundUp(CountRows(EmailPeopleGallery.AllItems) / 2, 0 ),
        304
    )
    

    このギャラリーの高さは、ギャラリー内のアイテムの数に合わせて調整されます。最大の高さは 304 です。

    EmailPeopleGallery の単一行の高さの合計として TemplateHeight + TemplatePadding * 2 を取り、それを行数で乗算します。 WrapCount = 2 なので、真の行の数は RoundUp(CountRows(EmailPeopleGallery.AllItems) / 2, 0) です。

  • プロパティ: ShowScrollbar
    値: EmailPeopleGallery.Height >= 304

    ギャラリーの高さが 304 に達すると、スクロール バーが表示されます。

EmailPeopleGallery タイトル コントロール。

  • プロパティ: OnSelect
    値: Set(_selectedUser, ThisItem)

    _selectedUser 変数を、EmailPeopleGallery で選択した項目に設定します。

MonthDayGallery タイトル コントロール。

  • プロパティ: OnSelect
    値: Remove( MyPeople, LookUp( MyPeople, UserPrincipalName = ThisItem.UserPrincipalName ) )

    MyPeople コレクションのレコードを検索します。ここで、UserPrincipalName は 選択したアイテムの UserPrincipalName と一致し、そのレコードをコレクションから削除します。

メール アイコン

  • プロパティ: OnSelect
    値: ユーザーの電子メール メッセージを送信するロジック。

    Set( _emailRecipientString, Concat( MyPeople, Mail & ";" ) );
    'Office365'.SendEmail( _emailRecipientString, 
        TextEmailSubject.Text,  
        TextEmailMessage.Text, 
        { Importance:"Normal" }
    );
    Reset( TextEmailSubject );
    Reset( TextEmailMessage );
    Clear( MyPeople )
    

    電子メール メッセージを送信するには、セミコロンで区切られた電子メール アドレスの文字列が必要です。 上記のコードにより、次のことが行われます。

    1. コードの最初の行は、MyPeople コレクションのすべての行からメール フィールドを取得し、それらをセミコロンで区切られた単一の電子メール アドレス文字列に連結し、_emailRecipientString 変数をその文字列に設定します。

    2. 次に、Office365.SendEmail 操作を使用して、受信者に電子メールを送信します。 操作には 3 つの必須パラメーターがあります。宛先件名本文、および 1 つのオプション パラメーター -- 重要性です。 上記のコードでは、これらはそれぞれ _emailRecipientStringTextEmailSubject.Text、TextEmailMessage.Text、および標準です。

    3. 最後に、TextEmailSubject および TextEmailMessage コントロールをリセットし、MyPeople コレクションをクリアします。

  • プロパティ: DisplayMode
    値: If( Len( Trim( TextEmailSubject.Text ) ) > 0 && !IsEmpty( MyPeople ), DisplayMode.Edit, DisplayMode.Disabled ) メールを送信するには、メールの件名にテキストを含める必要があり、受信者 (MyPeople) コレクションを空にすることはできません。

次の手順

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。