🐣

AppSheet で PDF帳票出力!Automation 機能を活用しよう!

2024/12/03に公開

業務で日々作成している報告書や請求書、見積書などの帳票類。作成に時間を取られてしまい、本来の業務に集中できない…なんて悩みをお持ちではないでしょうか?

私自身も以前は、見積書の作成、PDF 化、メールへ添付といった一連の業務を手動で行なっていたことがありました。
しかし、Google が提供するノーコード開発プラットフォーム AppSheet なら、そんな悩みを解決できるかもしれません。AppSheet の Automation 機能を活用すれば、これまで手作業で行っていた帳票作成を自動化し、大幅な業務効率化を実現できます。

本記事では AppSheet Automation 機能 の ひとつである PDF 出力について解説します。

AppSheet とは

AppSheet は Google が提供するスプレッドシートベースのノーコード開発プラットフォームです。AppSheet を使うことで、スプレッドシートのようなデータベースをもとに、簡単にアプリケーションを作成することができます。また、AppSheet は、Web アプリとモバイルアプリの双方に対応しており、ビジネスや個人の用途に応じて多様なアプリケーションを作成することができます。

AppSheet Automation とは

今回の PDF 帳票出力の自動化では AppSheet Automation を使います。
AppSheet Automation は AppSheet の機能の一つで、アプリ内で発生する様々なイベントをトリガーに、定義したワークフローを自動実行してくれる強力なツールです。
これまで手作業で行っていた定型業務を自動化することで、業務効率化、ヒューマンエラー削減、コスト削減などに貢献します。

PDF 帳票出力

AppSheet アプリのデータに基づいて PDF を作成し、帳票として出力することができます。PDF で帳票を出力することで、請求書、領収書、報告書など様々なドキュメントを自動作成するのに役立ちます。テキストだけでなく、 AppSheet で取り扱う関数や画像、住所などを含めることが可能です。

また、ファイルの格納先は 認証プロバイダごとにデフォルトで決まっているため Google アカウントでログインしている場合は、 Google ドライブに自動保存されます。

PDF 自動出力の結果

PDF の出力結果は以下の通りです。
表題から作成日、見積書番号、取引先名、自社名などが自動で表示されています。
見積明細をリスト形式で表示させることも可能です。

AppSheet アプリ

今回作成したアプリは以下の様になっています。
アプリの メニュー画面で「見積書作成」と「見積書一覧」のそれぞれに遷移しています。
見積書の作成から見積明細の登録、データを一覧で確認できる様になっています。

詳細ページでは、画面上部にAction ボタンを配置し、見積書作成データと見積明細のリスト、合計金額を表示しています。

Automation の設定

続いて 「データが登録されて PDF 発行ボタンを押下したら PDF が自動的に発行される」 Automation の設定をおこないます。

実はボタンから直接 Automation を呼び出すことはできません。
代わりに、① ボタンを押すとレコードが編集される ② 特定の編集を検知して Automation を起動する という仕組みになっています。

「① ボタンを押すとレコードが編集される」 については、Action を設定します。
ナビゲーションメニューから Action を選択し、「PDF発行」Action を新たに作成します。
この Action ボタンは、 PDF 発行ボタンを押下すると、見積書テーブルの PDF フラグ列に「発行済」の値が入るようにセットしています。

続いて、「② 特定の編集を検知して Automation を起動する」部分を設定します。

Automation とは、データの追加や更新、スケジュールなど特定の Event をトリガーとして、メール送信、外部サービスと連携、ファイルを作成するなどの自動化を実行できる強力な機能です。

早速、設定を行っていきます。
ナビゲーションメニューからロボットマーク (Automation) を選択し、EVENT を設定します。
見積書 Table で、データの更新かつ [PDFフラグ] が “発行済” の場合に Automation が起動する様に条件を指定します。

EVENT の設定は以上です。続いて、PROCESS の設定です。
この PROCESS で新しいファイル作成を実行するための設定をします。
まず、+ Add a step を押し PROCESS を新規作成します。
次に PROCESS の名称を設定します。EVENT とは異なり、枠内で名称を変更します。

次に、Settings で Create a new file を指定します。

HTTP Content Type の プルダウンから PDF を選びます。

Template の Create をクリックしてテンプレートを自動作成します。
このテンプレートは自動で生成できるほか、事前に用意したドキュメントを使用することも可能となっています。用意したテンプレートを使用する場合は、ファイルマークをクリックして Google Drive Files から使用するテンプレートを指定します。

Create をクリックすると 自動割り当てされた列が入った状態の Google ドキュメントを自動生成してくれます。View をクリックするとドキュメントが開きます。

テンプレートで使用できる変数

テンプレートについて解説する前にテンプレート内で使用できる変数について解説します。

まずは「列名変数」です。
列名変数は、 1 つのデータ列の値を取得し、PDF 出力されたとき、指定した列の値が表示されます。その列名はテーブルの列名と完全に一致し、角括弧で囲む必要があります。

例えば 作成日の値を表示させたい場合は以下のように記述します。

<<[作成日]>>

この記述がテンプレートで変数を使用するための基本になります。

続いて「式変数」です。
式変数は、値を計算してその結果を列の値として表示してくれます。
データテーブルのExpression Assistant で使用する式と同じようにドキュメント内でも
式を使うことが可能です。

例えば金額列と消費税列の合計値を表示させたい場合は以下のように記述します。

<<[金額]*[消費税]>>

データテーブルで仮想列を作成し、その列を列名変数で指定する方法もありますが、ドキュメント内で式変数を用いて表示させることで、アプリ内での計算負荷、同期の負荷軽減にも繋がります。

また、データテーブルの列で Ref Type を使って、参照している先のレコードを取得し表示させることもできます。参照先の列の値を取得するには[Ref Type の列].[参照先テーブルの列]の記述となります。
例えば取引先マスタテーブルに含まれる会社名列の値を表示させたい場合には、以下の様になります。

<<[取引先].[会社名]>>

この記述は別テーブルの情報を参照したいときに有効的です。

最後に「組込み変数」についてです。
組込み変数とは AppSheet が用意している自動化プロパティを構成するために使える変数です。主にテンプレート内、その他メッセージツール内に組み込むことができます。
例えばアプリで表示しているページの URL を表示させたい場合には以下のように記述します。

<<_ROW_WEB_URL>>

この記述によって、表示されている URL を簡単に開くことができます。

テンプレートで Start 式 を使用する

Start 式を使うことによって、レコードをリスト形式で表示させることができます。
Start 式は << Start :>> で リストの生成を開始し << End >> で終了します。

Start 式の例

このような Start 式を使うことによって、リスト形式で列の値を表示させることができます。

テンプレートで IF 式を使用する

IF 式はAppSheet のExpression assistant で使用するときと同じく、記述した条件をもとに値の表示切り替えをすることができます。Start 式と同じく IF 式でも << IF : >> <<EndIF>> をセットで使います。

IF 式の例

<<IF: ([個数] >=10)>>商品: <<[商品]>><<EndIF>>

この式の例は、商品の個数が 10 個以上だった場合に、その商品名を表示させるという関数です。IF 式を使うことによって、その条件にあった値を表示させることが可能になります。

この他にも Start 式を If 式に含める、If 式を Start 式に含めるといったことができます。

Start 式に If 式を含める場合の例

<<If: COUNT([見積明細])>0>>注文詳細レコード<<Start: [見積明細]>>商品: <<[商品]>>個数: <<[個数]>><<End>><<EndIf>>

この式では、見積明細の数が 1 つ以上であれば商品と個数のリストが表示されるようになります。

If 式を Start 式に含める場合の例

見積明細<<Start: [見積明細]>>商品: <<[商品]>><<If: ([個数] > 1)>>個数: <<[個数]>><<EndIf>>金額: <<[金額]>><<End>>

この式では、リストの各項目に対して、商品の列と金額の列の値が表示されます。
さらに、<<If: ([個数] > 1)>> と <<EndIf>> で囲まれた部分は、個数の列の値が 1 より大きい場合にのみ表示されます。

このように IF 式は、通常の条件分岐だけでなく組み合わせた条件分岐を記述することが可能です。

テンプレートを編集する

続いて、自動生成されたテンプレートを編集します。
自動生成されたテンプレートには 初期値として、Event で設定したテーブルの全ての列名と合わせて変数が設定されます。

さらに、データテーブルの Type を Ref に指定し、参照しているリスト( Related 〇〇s )が表形式で表示されています。見積明細で表記されている Start 式については前記述の通りです。

デフォルトでは左よりに全ての列とリストで表記されるようになっているため、ここから、実際出力する内容に合わせて、テンプレートの編集を行いレイアウトを整えます。

テンプレートでは、直接 Google ドキュメント上でテキストを編集することが可能なため、例えば、文字を太字にしたい場合には、ドキュメントの Bold を使います。

文字列を中央に配置したい場合にもドキュメントの配置を利用することが可能です。

レイアウト編集の最終形態は以下の様になります。

これで AppSheet のデータに基づいて PDF 出力するときにテンプレートは完成です。

まとめ

いかがでしたでしょうか。
AppSheet の PDF ファイルの生成は今まで手作業で行っていたデータの PDF出力、フォルダ保存までの一連を自動化してくれます。
また、テンプレートの形式も簡単な書式設定から参照リストを表示するための書式設定、AppSheet アプリで使用できる関数を使った複雑な書式設定まで取り扱うことが可能です。
社内業務のなかで PDF ファイルを手作業で作成しているという方はぜひ、AppSheet でアプリを作成し、PDF 作成を自動化して業務効率化をおこなっていただければ嬉しく思います。

弊社 AppSheet ブログはこちら :
https://www.yoshidumi.co.jp/collaboration-lab/tag/appsheet
AppSheet エバンジェリストの X はこちら :
https://x.com/yj_appsheet

吉積情報

Discussion