Power Apps로 투표 도구 만들기

※ 데이터나 외형은 일부 기사용으로 개변하고 있습니다

만든 것



이와 같은 투표 도구를 Power Apps에서 만들었습니다.
👍 버튼을 누르면 투표할 수 있고, 투표수(파랑 문자)를 누르면 투표한 사용자 목록을 볼 수 있는 도구입니다.


데이터를 잡는 방법



SharePoint 목록을 DB로 만들었습니다.
데이터를 잡는 방법은 이런 느낌입니다.


컬럼
유형
설명


번호
한 줄 텍스트
항목 번호를 저장합니다.

항목 이름
한 줄 텍스트
항목의 이름을 저장합니다.

사용자
여러 줄 텍스트
투표한 사용자의 이메일 주소를 ,로 구분합니다.


투표수를 가지는 방법은 여러가지라고 생각합니다만, 이번은 투표한 유저를 일람할 수 있도록(듯이) 하고 싶었으므로 이런 식으로 했습니다
Office365 커넥터를 사용하여 이메일 주소에서 사용자의 이름과 사진을 당겨서 표시합니다.

Power Apps 측면



목록 부분은 挿入 > ギャラリー에서 "갤러리(Gallery)"를 삽입하여 항목을 루프로 표시합니다.


투표 수가 많다> 번호가 빠른 순서로 표시



투표 수 (사용자)를 잡는 방법 때문에 여기에서 매우 고전했습니다 ...
SQL 익숙한 사람은 조금! 할 수 있을지도 😅

최종 코드는 이런 느낌

갤러리: Items
Sort(
    Sort(
        'リスト名',
        番号,
        Ascending
    ),
    If(
        IsBlank(
            Trim(
                Substitute(
                    Substitute(
                        PlainText(ユーザー),
                        Char(10),
                        ""
                    ),
                    Char(13),
                    ""
                )
            )
        ),
        0,
        CountRows(
            Split(
                Trim(
                    Substitute(
                        Substitute(
                            PlainText(ユーザー),
                            Char(10),
                            ""
                        ),
                        Char(13),
                        ""
                    )
                ),
                ","
            )
        )
    ),
    Descending
)

포인트① 이중으로 Sort 한다



투표수가 많다> 번호가 빠른 순서로 표시하고 싶으므로, 이중으로 Sort 합니다
우선도가 높은 것(이번에 말하면 「투표수」)을 바깥으로 합니다

포인트② 투표수 「0」을 내는 방법



시작하기 ユーザーカラムの中身を Split => Split したものを CountRows で個数数えて投票数を出す라고 하는 바람으로 하고 있었습니다만, Split 라고 하늘의 경우도 1 건으로서 카운트되어 버립니다

그래서 If를 사용하여 '빈 경우 0'이라는 조건을 추가했습니다.

공백의 판정에는 IsBlank 를 사용한다 + 유저 컬럼은 복수행 텍스트이므로 개행·공백을 없애도록 했습니다
개행은 CR = Char(13) LF = Char(10)입니다

투표수의 산출 로직은, 투표수를 표시하고 있는 개소·투표수에 의해 텍스트의 색을 바꾸고 있는 개소도 마찬가지입니다

※ 이쪽 참고로 했습니다
htps : // 코 m / 야마 d365 / ms / 4f0 베 c10 꺾어 57368173d3

투표하다



👍 버튼을 눌러 투표 할 수 있습니다.
Office365ユーザー 커넥터의 MyProfileV2()를 사용하면 응용 프로그램 화면을 보는 사용자의 정보를 얻을 수 있습니다.Office365ユーザー.MyProfileV2().mail에서 이메일 주소를 가져와 SharePoint 목록의 사용자 열에 씁니다.

코드는 이런 느낌

투표 버튼: OnSelect
Patch(
    [@'リスト名'],
    LookUp(
        [@'リスト名'],
        番号 = ThisItem.番号
    ),
    If(
        IsBlank(
            LookUp(
                [@'リスト名],
                番号 = ThisItem.番号
            ).ユーザー
        ),
        {ユーザー: Office365ユーザー.MyProfileV2().mail},
        {
            ユーザー: Concatenate(
                LookUp(
                    [@'リスト名'],
                    番号 = ThisItem.番号
                ).ユーザー,
                ",",
                Office365ユーザー.MyProfileV2().mail
            )
        }
    )
)


마음 남음



투표했을 때에 실시간으로 투표수·표시 순서가 바뀌지만, 그 때에 Sort가 실행되므로 표시가 깜박입니다
불쾌하기 때문에 어떻게든 하고 싶었지만, Sort가 완료할 때까지 표시하지 않게 하는 방법이 없을 것 같다(PowerApps의 타이밍에 맡겨져 있다) 이었기 때문에 포기했습니다
만약 이렇게 하면 좋다! 라고 하는 방법 아시는 분 계시면, 꼭 가르쳐 주었으면 합니다~~

좋은 웹페이지 즐겨찾기