はじめに
Power Appsでバーコード リーダー
コントロールが存在します。
文字通り、QR コード
を含む様々なバーコードを読み取ることができる機能です。
Bingで「power apps バーコードリーダー」と検索すると驚いたことに私の以前の記事がでてきました。
投稿から1年以上経過していますが、コネクタの部分の解説が有効であるので、
後ほど触れます。
この記事を書いた時期と、バーコード リーダー
の取り扱いが変わったところがあります。
今回はその解説をしたいと思います。
読書管理アプリを作ろう
この記事は「Power Appsで読書管理アプリを作ろう」の解説の一つです。読書管理アプリ
- 【本の記録アプリ】キャンバスアプリでISBNコードから本をとうろくする
- 【読書管理アプリ】モデル駆動型アプリで読書の記録をするアプリ
このアプリケーションを作っていきます。
- キャンバスアプリ
- モデル駆動型アプリ
- Power Automate
上記の説明をテーマにしている内容です。
バーコード リーダー コントロール
今回は読書管理アプリのうち、本のバーコードから、本の情報を取得し、
Dataverseに記録するアプリを作成します。
本に付属するISBNコードは一意の値ではありません。
一つのISBNコードに対し、複数の本の情報が紐づいています。
上記のことを踏まえたうえで、Power Appsを作っていきましょう!
バーコード スキャナーとリーダー
Power Appsのアップデートの変遷で、バーコード読み取り機能は、2024.01.14現在、
2点存在します。
このうち、デフォルトになっている機能が
「バーコード リーダー コントロール」です。
バーコード スキャナー コントロール
こちらはレガシであり、廃止されます。
バーコード スキャナー コントロールとの違いは、
読み取った値の戻り値が、配列
もといTable
型ということです。
そのことからlearnの使用例も、ギャラリーコントロール
に複数のバーコードを読み取った結果を返す方法を紹介しています。
完成系
- バーコード リーダーで複数のバーコードを読み取る
- 結果を
OnScan
でCollection
に格納 - 同時に、
Collection
の先頭の値でGoogle Books API
を実行 - Google Books APIの結果を
ギャラリー コントロール
に反映する - ギャラリー コントロールで
選んだレコードをメインセクションに反映する
- ☑️ボタンで
Dataverseに格納する(Power Automate)
バーコード リーダー コントロール
バーコード リーダー コントロール
は、スマートフォン・タブレットで機能します。
予め携帯電話でスキャンすることを想定し、
アプリのレイアウトはレスポンシブ対応しているテンプレートのデザインを採用しました。
バーコード リーダー コントロール
の特徴ですが、読み取りに複数のモードがあります。
English | モード | 詳細 |
---|---|---|
AutomaticallyScan | 自動スキャン | バーコードは検出されるとすぐにスキャンされる |
SelectToScan | 選択してスキャン | ユーザーは、検出されたバーコードのどれをスキャンするかを決定できる |
ScanMultiple | 複数スキャン | ユーザーは、バーコード セッション中に複数のバーコードをスキャンできる |
ScanMultiple(複数スキャン)
一度の起動で複数のバーコードが読み取れる機能。
結構わたしは気に入っています。
スキャンした結果もすぐに確認できるところもGoodです。
複数選択した結果はList Box
にコレクション
で格納します。
// スキャンされたバーコード一覧
ClearCollect(colScans,
Self.Barcodes
);
// コレクションの最初の値を変数に格納します
Set(varIsbn,First(colScans).Value);
// APIの実行
Set(APIResult,GoogleBooksSearch.GetBookInformation(varIsbn).items);
colScans
// リストボックスの値を変数に格納します
Set(varIsbn,Self.Selected.Value);
// APIの実行
Set(APIResult,GoogleBooksSearch.GetBookInformation(varIsbn).items);
コンボ ボックスの方が使いやすいかもしれません。
好みで選んでください。
またスキャンしない場合の対応、電子書籍でISBNコードを直接入力する用にTextInput
も予備で備えます。
// テキストインプットの値を変数に格納します
Set(varIsbn,inpISBN.Value);
// APIの実行
Set(APIResult,GoogleBooksSearch.GetBookInformation(varIsbn).items);
カスタム コネクタ
APIの呼び出しはカスタム コネクタで実装しています。
こちらは1年以上前に書いた記事ですが、作り方がそのまま書いてますので、こちらを参照してください!
ギャラリー コントロール
APIの結果を変数に格納し、ギャラリーコントロールに反映します。
Table型の値なので、このまま機能します。
APIResult
タイトルが非常に長い本にも対応させるため、空の伸縮可能なギャラリーを採用しました。
Google Books APIの戻り値のJSONは、対象の本によって取得できる値が増減します。
{
"kind": "books#volume",
"id": "p-QqwQEACAAJ",
"etag": "SR1p4bW36mw",
"selfLink": "https://www.googleapis.com/books/v1/volumes/p-QqwQEACAAJ",
"volumeInfo": {
"title": "PowerPoint資料作成プロフェッショナルの大原則",
"subtitle": "12のステップと154の原則で学ぶ外資系コンサルの仕事術",
"authors": [
"松上純一郎"
],
"publishedDate": "2019-02-02",
"description": "経営企画、マーケティング、コンサルタント、営業、エンジニア、作業療法士etc.1,500名を超える受講者を満足させた人気講座をまるごと書籍化。会社が教えてくれない「正しい資料」の作り方。",
"industryIdentifiers": [
{
"type": "ISBN_10",
"identifier": "4297103087"
},
{
"type": "ISBN_13",
"identifier": "9784297103088"
}
],
"readingModes": {
"text": false,
"image": false
},
"pageCount": 527,
"printType": "BOOK",
"maturityRating": "NOT_MATURE",
"allowAnonLogging": false,
"contentVersion": "preview-1.0.0",
"panelizationSummary": {
"containsEpubBubbles": false,
"containsImageBubbles": false
},
"imageLinks": {
"smallThumbnail": "http://books.google.com/books/content?id=p-QqwQEACAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api",
"thumbnail": "http://books.google.com/books/content?id=p-QqwQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"
},
"language": "ja",
"previewLink": "http://books.google.co.jp/books?id=p-QqwQEACAAJ&dq=9784297103088&hl=&cd=1&source=gbs_api",
"infoLink": "http://books.google.co.jp/books?id=p-QqwQEACAAJ&dq=9784297103088&hl=&source=gbs_api",
"canonicalVolumeLink": "https://books.google.com/books/about/PowerPoint%E8%B3%87%E6%96%99%E4%BD%9C%E6%88%90%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7.html?hl=&id=p-QqwQEACAAJ"
},
"saleInfo": {
"country": "JP",
"saleability": "NOT_FOR_SALE",
"isEbook": false
},
"accessInfo": {
"country": "JP",
"viewability": "NO_PAGES",
"embeddable": false,
"publicDomain": false,
"textToSpeechPermission": "ALLOWED",
"epub": {
"isAvailable": false
},
"pdf": {
"isAvailable": false
},
"webReaderLink": "http://play.google.com/books/reader?id=p-QqwQEACAAJ&hl=&source=gbs_api",
"accessViewStatus": "NONE",
"quoteSharingAllowed": false
},
"searchInfo": {
"textSnippet": "経営企画、マーケティング、コンサルタント、営業、エンジニア、作業療法士etc.1,500名を超える受講者を満足させた人気講座をまるごと書籍化。会社が教えてくれない「正しい資 ..."
}
}
ギャラリー コントロールには、確実に取得できるか、定かではない、
Subtitle
などの属性を利用しない形でレイアウトを作ります。
メインセクション
今回はForm コントロール
を使わずに使っています。
レスポンシブ対応を考えるのであれば、Form
を使ったほうが楽です。
ただ今回は、Datasource
を指定しないアプリのため、採用しませんでした。
コンテナ
を積極的に使い、微調整していきます。
また、レスポンシブ対応は、こちらに加えて、テンプレートの変数や微調整が必要になります。
このとき、コントロールや変数を参照して、高さや幅、表示が決まっていたコントロールは、エラーを起こすので注意してください。
Dataverseへのアップロード
Power Automate
を使い、新規レコードとして登録します。
フローはこちら!
Power Apps のフロー起動
recordDataverseTable.Run(
galAPIResult.Selected.volumeInfo.imageLinks.thumbnail,
galAPIResult.Selected.volumeInfo.title,
Concat(galAPIResult.Selected.volumeInfo.authors,Value & ";"),
inpPublisher.Value,
galAPIResult.Selected.volumeInfo.infoLink,
varIsbn
)
サムネイルもアップロードしたいので、Google Books APIのイメージリンクにGETリクエストを送ります。
このアクションの戻り値を画像としてアップロードしてあげる必要があります。
base64ToBinary(body('HTTP')?['$content'])
モデル駆動型アプリに無事記録!
おわりに
まずは、アプリケーションを作りたい性分から、バーコードリーダーコントロールを使ったアプリの例を紹介しました。
対応している規格も多く、便利ですね!
是非、業務でも私生活でも活かしてみてください!
それでは、良いPower Lifeを!
おまけ
レイアウトの説明をかなり省いていますので、msappファイルを置いておきます。