PowerAppsをつかって爆速でQRコードを読み取ろう


概要

PowerAppsのスキャン関数を利用してQRコードを読み取るアプリを作ろうと思います。
Android版でのみ動作を確認しています。
※現在(2018/11/16)時点でプレビュー版の機能ですので何かしらの変更があり動かなくなる可能性がありますがあらかじめご了承ください。

注意

この記事はすでに古いものになっています。
現在は ios、Android用にバーコードスキャンコントロール(ボタン)が追加されましたのでそちらをご利用ください。

準備

  • PowerAppsが利用できる環境 (Office365 F1以上 や プラン1、プラン2、試用版でも構いません)
  • QRコード (お好きな文字列が入ったQRコードを用意しましょう。ない場合は以下をご利用ください)

動作イメージ

ボタン押下→QR読み取り→読み取った値が表示+成功 or 失敗の通知

を実装します。

設定

アプリの設定→詳細設定→実験的な機能の中のバーコードのスキャン関数を有効にするをオンにします。

読み取り実装

まずは全体のイメージです。

空のアプリを作成後ボタン、ラベルを挿入し名前をそれぞれ

変更前 変更後
Label1 ScanLabel
Button1 ScanButton

とわかりやすいように変更しました。

次にスキャン関数を ScanButton に対して実装します

ScanButtonを選択し、OnSelect式に対して次のような数式を実装します。

ClearCollect(
    hoge,
    ScanBarcode()
);
If(
    IsBlank(Text(First(hoge).Value)),
    Notify(
        "QR コードが読み取れませんでした",
        NotificationType.Error
    ),
    Notify(
        Text(First(hoge).Value),
        NotificationType.Information
    )
)

それぞれに関して上から説明します。

ClearCollect

変数宣言です。この関数ではClear関数 の後に Collect関数が実装されます。
つまり今回の使い方だと、 hoge 変数に対して ScanBarcode関数の戻り値(結果)を挿入している形になります。

Clear

変数の中身を空にします。

Collect

変数に対して値を追加します。

公式にわかりやすい例がありましたのでこちらをご覧ください。

ScanBarcode

こちらの関数が今回の肝です。QR読み取りを起動し、読み取った結果をテーブルで返します。

If

条件が true の場合とそうでない場合とで異なる結果を返すかアクションを実行します。
if(条件,true,false)といった形になります。

IsBlank

値が空白であるかどうかを調べて true false を返します。
ここでいう空白とはwhitespaceや空の事ではなく正確には "値がない" または "不明な値" の場合という点にご注意ください。

First

テーブルの最初のレコードを返します。
今回は ScanBarcode で返ってきたテーブルの最初の行の値を取得している形になります。
この値が空白の場合Notify関数(Error)を実行します。

Notify

アラートを実行します。
×ボタンで閉じるか時間経過で自動的に消えます。

NotificationType

Notifyの状態(色)を決めます。
今回利用した Error Information 以外に Worning Success があります。
指定しない場合は Information となります。

表示の実装

最後にラベルを実装します。
先ほど結果はhoge変数に入っている為、それをそのまま使います。

ScalLabelのTextに

Concatenate("結果:", Text(First(hoge).Value))

を実装します。

Concatenate

文字列を連結します。
カンマ区切りでいくつでも連結できます。

実行する

Android端末でGooglePlayからPowerAppsをダウンロードし、ログインを行い起動します。
downloadに時間がかかったり、読み込みから失敗するときもありますので、何度か開きなおすことをお勧めします。

ボタンを押すとcameraの許可が求められますので許可してください。
無事読み取れましたね。

失敗通知を出したい場合はQR読み取りを戻るボタン等で中止すると表示確認できます。

以上で終了です。
非常に簡単に実装できますので、社内でQRを使ったアプリを使う場合はぜひ参考にしてみてください。(利用者は各プランに入る必要があります詳細はこちら)

参考