PowerApps│既存紙媒体書式の作成と印刷を行う方法

七草あんこ

デジタル化が叫ばれる昨今、あなたの職場にも頑なに印刷して紙で提出しないとダメな書式がありませんか?

ペーパーレスに移行できれば良いのですが、作成に時間と手間をかけているのは大抵権限の低い層です。
とはいえ手をこまねいていては何も変わりません。手書きでは時間がかかりますし、訂正印が認められないものは書き損じのリスクがあります。

自分が楽をするためにも、アプリで入力と印刷ができるようにしてしまえっ!というのが今回の記事です。

いきなり結論

原本がPDFなどデータであり、白紙に印刷して良いものはととても簡単。

プレ印刷に連番が付されている特殊様式は手差しで対応。微調整が大変。

00│まず動画をご覧ください

データの反映をわかりやすくするため、同一スクリーン上に入力コンソールと印刷書式(サンプルは納品書)を配置しています。

まず、入力コンソールから日付・取引先・品名とその数量を選択します。

その後、結果が納品書に反映しています。

動作として品名横のを押すと品名と数量1が登録され以後99まで1ずつ増えます。

を押すと数量が1ずつ減り数量が0になると品名が消えます。

数量に応じて単価をかけた値を金額欄に、それらの合計も表示します。

アプリの具体的な作り方は下記の通りです。今回はコレクションのみで処理しています。入力元や印刷記録も残したいといった場合は、別途SharePointリストを用意してください。

  1. 印刷書式を画像ファイルとしてアプリに読み込む
  2. 入力コンソールを作成する
  3. 印刷書式に入力内容を反映する
  4. 印刷時は背景のグラフィックスにチェックを入れる

以降、コピペできるコードはサンプルコレクションの使用を想定しています。うまく動作しない場合は調整してください。サンプルコレクションを使う場合は、下記記事にある_SampleCollectionを適当なButtonコントロールにコピペし、実行してください。

01│印刷書式を画像ファイルとしてアプリに読み込む

  1. 物理的な書式は、複合機やスキャナーを経由してpngファイルに変換します。
  2. データがある書式は、PC画面に表示しWin+Shift+Sで切り取り、PowerPointやペイントでpngファイルに変換します。
  3. あとはアプリに取り込むだけです。

02│入力コンソールを作成する

  1. 品名・単価・数量を含めたデータソースを用意します。
    サンプルのコレクションはこちらからコピペできます。
  2. 記入日用のDatePickerコントロール、取引先用のTextInputコントロール、品名などを入力するGalleryコントロールItems=_SampleCollection)を配置します。Galleryコントロールのみ下記コードを埋め込みます。
If(IsBlank(LookUp(_Detail,A=ThisItem.商品名)),
//未登録
    If(CountRows(_Detail)=6,                    //登録上限数
        Notify("これ以上品目を追加できません!"),
        Collect(_Detail,
            {A:ThisItem.商品名,
            B:1,
            C:ThisItem.単価}
        )
    ),
//登録済み
    Patch(_Detail,LookUp(_Detail,A=ThisItem.商品名),
        {B:LookUp(_Detail,A=ThisItem.商品名,B+1)}
    )
)
If(!IsBlank(LookUp(_Detail,A=ThisItem.商品名)),
 //登録済み
    Patch(_Detail,LookUp(_Detail,A=ThisItem.商品名),
        {B:LookUp(_Detail,A=ThisItem.商品名,B-1)}
    )
);
//数量が0ならレコード削除
Remove(_Detail,LookUp(Filter(_Detail,A=ThisItem.商品名),B<1))

03│印刷書式に入力内容を反映する

  1. 日付部分は年、月、日を分割したLabelコントロールを作成し、DatePickerコントロールを参照させます。
    年月日TextInput
  2. 取引先のLabelコントロールを作成し、TextInputコントロールを参照させます。
    取引先TextInput
  3. 品名等はGalleryコントロールItems=_Detail)を設置し、適当なLabelコントロールに参照させます。
    品名Gallery
  4. 合計欄はLabelコントロールを作成し、下記コードをコピペします。
    合計Label
Text(Sum(Gallery01.AllItems,Label00.Text),"¥#,###")

サンプルは品名ごとの金額と斜線をSVGで表示しています。それぞれの作り方は下記記事を参考にしてください。

04│印刷時は背景のグラフィックスにチェックを入れる

印刷ボタンを押したけど肝心の書式が見えないし、紙に印刷しても表示されない。

そんなときは印刷オプションのその他の設定>背景のグラフィックスにチェックを入れてください。

そうすれば画面にも紙にも表示されます。

この背景のグラフィックスImageコントロールの表示可否を切り替える機能です。

背景のグラフィックス

SVGもImageコントロールのため、このチェックを外すと斜線や金額が印刷されません。

以上でアプリは完成です。印刷する書式や入力コンソールをカスタマイズしてご利用ください。

05│手差し印刷で対応する方法

印刷する用紙も決まっている手ごわい書類もありますよね。

その場合は背景のグラフィックスのチェックを外すことでImageコントロールを除いた状態で印刷できます。

ただし、SVGを使用している場合はそれも表示されなくなる弊害があります。

そのため、印刷書式を設置した確認用スクリーンと印刷書式を取り除いた印刷用スクリーンを用意することでSVGも印刷することができます。

手差し印刷は直接レイアウトを印刷できないため印字位置の微調整が大変です。
未来への投資だと考え、根気よくがんばってください。

06│まとめ

未来への投資・・・いい言葉ですよね。一度作ってしまえば様々な書式に対応できるので助かる人もたくさんいるはずです。

感謝されることもありますし、全国展開されると名前も売れていいことづくめです。小さなことからコツコツとチャレンジしてみましょう!

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。