掲示板アプリの紹介
私の勤める鉄道会社では、毎日のように掲示物を紙で管理していました。
紙で管理しているため、「作成」・「印刷」・「掲示」・「撤去」・「管理」という作業がすべて人力で行っていました!
そこでPower Appsで掲示板アプリを作成して現在も運用しています。
詳しいアプリの紹介は別の記事をご覧ください。
それでは本題に
今回は実際にユーザーより要望のあった機能を実装していきたいと思います。
自分でお気に入り登録して資料を分類したい!
お気に入りに登録したものだけ一覧にしてほしい!
SharePointリストの準備
お気に入り
メンテナンス重視するために新たにSharePointリストを作成してマスタとは別に保存させます。
内部名 | 種類 | 役割 | 注意事項 |
---|---|---|---|
Title | (初期作成済み) | 使用しないため非表示 | |
1行テキスト | メールアドレスを格納するために使用 | ||
hozon_ID | 複数行テキスト | お気に入りした資料のIDを格納するために使用 | 編集対象行数を最大値の「1000」に変更しておく |
Power Appsの準備
初めにSharePointリストをPower Appsと紐づけます。
ギャラリー内にチェックボックスを追加します。
Power Apps ギャラリーにチェックボックスの追加
メインの機能となるお気に入りに「設定」「解除」をするチェックボックスを追加していきます。
OnCheck
If(CountRows(Filter(【SharePointのリスト名】,mail=User().Email))=0
リストのmail列とログインユーザーと一致していないと0を出力し、trueとなります。
リストのmail列とログインユーザーと一致している行があると0以外を出力し、falseとなります。
trueの場合
Patch(【SharePointのリスト名】,Defaults(【SharePointのリスト名】),{hozon_ID:ThisItem.ID,mail:User().Email})
リストにまだ登録されていないユーザーのため、mail列にUser().Emailでメールアドレスを取得し格納しています。
falseの場合
Patch(【SharePointのリスト名】,LookUp(【SharePointのリスト名】,mail=User().Email),{hozon_ID:LookUp(【SharePointのリスト名】,mail=User().Email).hozon_ID&”,”&ThisItem.ID})
すでにリストに登録されているためLookUp関数でユーザーの行を取得して、さらにLookUp関数ですでに格納されているhozon_IDを取得して、新たにIDを追加しています。
If(CountRows(Filter(お気に入り,mail=User().Email))=0,
Patch(お気に入り,Defaults(お気に入り),{
hozon_ID:ThisItem.ID,mail:User().Email
}),
Patch(お気に入り,LookUp(お気に入り,mail=User().Email),{
hozon_ID:LookUp(お気に入り,mail=User().Email).hozon_ID&","&ThisItem.ID
})
)
OnUncheck
UpdateIf(【SharePointのリスト名】,mail=User().Email,
{hozon_ID:Substitute(LookUp(【SharePointのリスト名】,mail=User().Email).hozon_ID,”,”&ThisItem.ID,””)})
UpdateIf関数で条件で絞り込んで、絞り込んだ行を更新していきます。
あくまでも、チェックを外す際の実行されるものですのでUpdateIf関数で問題なしです。
UpdateIf(お気に入り,mail=User().Email,
{
hozon_ID:Substitute(LookUp(お気に入り,mail=User().Email).hozon_ID,","&ThisItem.ID,"")
}
)
Default
If(IsBlank(Find(Text(ThisItem.ID),LookUp(【SharePointのリスト名】,mail=User().Email).hozon_ID))=true,false,true)
Find関数でログインユーザーの行があり、hozon_ID列にギャラリーと同じIDが格納されているか探索します。
もし同じIDがあった場合はtrueを返して、チェックボックスにチェックを入れています。
同じIDがない場合はfalseを返して、チェックボックスにはチェックが入りません。
If(IsBlank(Find(Text(ThisItem.ID),LookUp(お気に入り,mail=User().Email).hozon_ID))=true,false,true)
Text
好きな文字列を指定してください。
例えば、「ブックマーク」や「保存」など
"お気に入り"
Power Apps お気に入りに設定した項目だけを抽出するギャラリーを作成
お気に入りに追加した項目を表示するギャラリーを作成していきます。
ギャラリー「Items」
Filter(Split(LookUp(【SharePointのリスト名】,mail=User().Email).hozon_ID,”,”),Not(Value=””))
LookUp関数でログインユーザーの項目だけを絞り込み、Split関数で「,」ごとにテーブルに置き換えています。
さらにFilter関数で空白の項目をNot関数で除外してテーブルを作成しています。
Filter(Split(LookUp(掲示_お気に入り,mail=User().Email).hozon_ID,","),Not(Value=""))
ギャラリー内のテキストボックス 主キー
ThisItem.Value
ThisItemでItem内の項目を取得します。
ThisItem.Value
ギャラリー内のテキストボックス それ以外の項目
LookUp(【SharePointリスト名 ここではマスタが格納されているリスト名を入力】,Value(ThisItem.Value)=ID).【取得したい列名】
Items内に格納されているhozon_IDとマスタのIDで一致する項目の列をLookUp関数を使用して取得しています。
下記のコードではタイトルを取得していますが、LookUp関数を使うことで【取得したい列名】を変更すれば度の列も取得できるようになります。
LookUp(掲示板アプリ_マスタ,Value(ThisItem.Value)=ID).タイトル