AppSheetで請求書アプリ(第7回)Automationで請求書をPDFで発行

folder_openAppSheet

請求書アプリを作りながら、AppSheetの使い方を学びましょう。
前回(第6回)は請求書のひな形(テンプレート)をGoogleドキュメントで作成しました。
今回は、AppSheet Automation(オートメーション)でひな形を使って請求書を作成し、PDFで発行するBot(ボット)を作成します。
さらに、発行したPDFのパス(Googleドライブ上の場所情報)を取得して、テーブルに保存するStep(ステップ)を追加します。

Automationには6つのTask(タスク)が用意されています。
今回は「Create a new file」というTaskでファイル作成します。
その他のTaskの使い方や活用事例については、ブログ記事「AppSheet Automationの使い方(第1回)6つのTaskでできること」を参考にしてください。

【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。

Switch to the legacy editor」で旧エディタに切り替える。

1. AppSheet Automationで請求書をPDFで発行する

Automationは、Botを作成して、Event → Step → Task の順で設定していきます。
最後に、Actionを作成します。
Actionを実行することによりBotが起動して、Botに設定されたAutomationが実行されるという流れです。

Bot(ボット)を作成する

AppSheetエディタの左側メニュー「Bots」(旧エディタでは、Automation)をクリック、「Bots」タブに移動します。
「New Bot」をクリックしてBotを作成します。

AppSheetエディタの左側メニュー「Bots」(旧エディタでは、Automation)をクリック、「Bots」タブに移動、「New Bot」をクリックして、AppSheet Automationの「Bot」を作成する。

Botの名前をつけます。
「Bot name」で「請求書PDF発行」という名前をつけました。

Botの名前を入力する。

Event(イベント)を作成する

次に、Event(イベント)を作成します。
EventはBotを実行するためのトリガ(きっかけ)になる設定です。
Eventで設定した値が更新されたり、指定した時刻になった時にAppSheetがBotを呼び出して実行します。

「Configure event」をクリックします。

AppSheet AutomationのトリガになるEventを設定する。

Eventの名前をつけます。
「Event name」に「請求書トリガ」という名前をつけました。

Eventの名前を入力する。

画面右側に、Eventの設定パネルが開きます。
Event typeを「Data Change」にして「Updates only」を選択します。
Tableを「請求書」にします。

続けて、Conditionに式を設定します。Conditionのフィールドをクリックします。

AppSheet Automationの「Event」を設定する。

Expression Assistant に以下のように式を入力して、「Save」をクリックして保存します。
第2回で、「請求書」テーブルに「トリガ」列というNumber列を用意しておきました。
この式の意味は、「トリガ列の値が変更されたら・・・」という意味です。

  • [_THISROW_BEFORE]:「この行(レコード)の前の値」
  • [_THISROW_AFTER]:「この行(レコード)の後の値」
  • <>:等しくない

なので、「前のトリガの値と後のトリガの値が等しくない」時にBotを実行します。

Event の Condition の Expression Assistant を設定する。

設定すると以下のように表示されます。

Eventに条件式を設定した。

後で設定するActionで「トリガ」の値を変更します。
すると、AppSheetが「前のトリガの値と後のトリガの値が等しくない」→「トリガの値が変更された」と判断して、Botが呼び出されます。

Step(ステップ)を作成する

続いて、Step(ステップ)を作成します。
Step(ステップ)をひとつ追加すると、自動的にProcess(プロセス)が設定されます。

「Add a step」をクリックします。

AppSheet Automation のStep(ステップ)を設定する。

Step(ステップ)の名前をつけます。
「Step name」に「請求書PDF発行ステップ」と名前をつけました。

Step(ステップ)に名前を付ける。

Stepが追加されるので、クリックして開きます。

AppSheet Automationの「Step」を追加する。

ステップの種類を選択します。ここでは「Run a task」にします。

Stepの種類を「Run a task」にする。

画面右側にTask設定パネルが開きます。

Task(タスク)を設定する

そのまま右側のパネルで設定を続けられますが、もう少し大きなパネルでやりましょう。
タブメニュー「Tasks」をクリックします。
「請求書PDF発行ステップ Task - 1」というTask(タスク)があるので、クリックして開きます。

AppSheet Automationの「Task」を設定する。

設定パネルで以下のように設定します。

  • Task category:「Create a new file」
  • Task name:「請求書PDF発行タスク」
  • Table name:「請求書」
  • HTTP Content Type:「PDF」

続けて、Templateの書類アイコンをクリックします。
ここで第6回で作成したGoogleドキュメントのひな形を選択します。

「Task」を「Create a new file」にして設定する。

Upload fromで「Google Drive Files」を選択します。

Google Drive Files を選択する。

前回(第6回)で作成した「請求書」のGoogleドキュメントのひな形を選択して、「Select」をクリックします。

Googleドキュメントの「請求書」を選択する。

Templateに「DocId=1....」と表示されたら無事にひな形が選択されました。

次に、「File Folder Path」はPDFを保存するGoogleドライブの場所の設定ですが、ここは空欄でも大丈夫です。
空欄の場合は、アプリフォルダ内に「Files」というフォルダが作成されて、「Files」内にPDFが保存されるようになります。

続けて、「File Name Prefix」を設定します。
三角フラスコアイコンがあるフィールドをクリックします。

請求書のひな形が選択された。

「File Name Prefix」はPDFにつけるファイル名を設定します。
以下の式をコピペして使ってください。

[請求書番号] & "-" & [トリガ]

Expression Assistantには以下のように入力します。

Expression Assistantにファイル名を入力する。

請求書のファイル名は「請求書番号」に「トリガ」の数字を付加しています。
請求書を発行する度に「トリガ」の値が「+1」されるので、何度発行しても重複のないファイル名になります。

最後に、以下の項目を設定します。

  • Disable Timestamp ? :チェックする
  • Attachment Page Orientation:「Portrait」
  • Attachment Page Size:「A4」

以上で、Taskの設定は完了です。

Disable Timestamp、Attachment Page Orientation、Attachment Page Sizeを設定する。

流れを確認する

念のため、Automationの流れを確認してみましょう。
Botsには「請求書PDF発行」というBotがひとつあります。

Bot(ボット)がひとつ追加されたことを確認する。

Eventsには「請求書トリガ」というEventがひとつあります。

Event(イベント)がひとつ追加されたことを確認する。

Processesには「Process for 請求書PDF発行 - 1」がひとつあります。
さきほどの設定手順では、Process(プロセス)を作成する手順はありませんでしたが、Stepを追加すると自動的にProcessも作成されます。
Processの名前はAppSheetが自動的に付けた名前なので、後で変更することもできます。

Process(プロセス)がひとつ追加されたことを確認する。

Tasksには「請求書PDF発行タスク」がひとつあります。

Task(タスク)がひとつ追加されたことを確認する。

Actionを設定する

Botを実行するAction(アクション)を設定します。
AppSheetエディタの左側メニュー「Action」(旧エディタでは、Behavior)をクリックします。
「New Action」で新しいActionを作成します。

AppSheetエディタの左側メニュー「Action」(旧エディタでは、Behavior)をクリックして「New Action」で新しいActionを作成する。

Actionを以下のように設定します。

  • Action name:「請求書発行」
  • For a record of this table:「請求書」
  • Do this:「Data: set the values of some columns in this row」
  • Set these columns:「トリガ」「= [ トリガ ] + 1」
  • Action icon:「pdf」

「請求書発行」Action を設定する。

「Set these columns」は「Add」をクリックして、「トリガ」を設定します。
三角フラスコアイコンをクリックして、Expression Assistantに以下のように入力します。

Set these columns の Expression Assistant を設定する。

この「請求書発行」Acitonを実行すると「トリガ」列の現在の値に1が加算されます。
Eventには「トリガ列の値が変更されたら・・・」という意味の式

  • [_THISROW_BEFORE].[トリガ] <> [_THISROW_AFTER].[トリガ]

を設定しているので、このActionを実行するとAppSheetが「トリガの値が変更された」と判定してBotが実行されるということです。

右上の「Save」をクリックしてActionを保存しましょう。
これでBotを実行する準備ができました。

Botを実行する

Botを実行して請求書をPDFで発行してみましょう。
AppSheetエディタのプレビューで「請求書」を選択し、作成済みの請求書をひとつ選択します。

AppSheetエディタのプレビューで「請求書」を選択し、作成済みの請求書をひとつ選択する。

さきほど作った「請求書発行」Actionがボタンで表示されています。
ボタンをクリックするとBotが実行されるので、クリックしてみましょう。

「請求書発行」Actionがボタンで表示されているので、ボタンをクリックしてBotを実行してみる。

Botが実行されます。

AppSheet Automation を実行中。

データソースのスプレッドシートを確認してみます。
「請求書」シートの「トリガ」が「1」になっていると思います。
「トリガ」列の値が更新されたので、AppSheetがBotを呼び出して実行します。

「トリガ」列の値が更新されたので、AppSheetがBotを呼び出して実行される。

では、請求書がPDFで発行されたかを確認してみましょう。
Googleドライブで「AppSheet」フォルダを開きます。
その中に「data」というフォルダがあるので開いてみましょう。

Googleドライブを確認する。

「請求書-○○○○○○○」というフォルダがあると思うので開いてみましょう(○○○○○○○はowner's IDを含む文字列です)。

AppSheetフォルダ、dataフォルダ内のアプリフォルダを開く。

「Files」というフォルダがあると思います。

「Files」フォルダが作成されている。

「FIles」フォルダ内に請求書PDFが保存されていれば成功です。

「Files」フォルダ内に請求書PDFが保存されている。

前回(第6回)作成したGoogleドキュメントのひな形に、各テーブルの値が差し込まれて請求書が作成されました。

請求書が作成された。

2. AppSheet Automationで請求書のパスを保存する

GoogleドライブにAppSheetが発行した請求書PDFが保存されていることが確認できました。
ここでは、請求書アプリにPDFのリンクを表示して、アプリからPDFを開けるようにしましょう。
第2回で「請求書」テーブルに「請求書ファイル」という列を用意しておきました。この列にPDFのパスを保存します。

BotにStepを追加する

さきほど作成したBot、「請求書PDF発行」にStepを追加します。
AppSheetエディタ左側メニュー「Bots」(旧エディタでは、Automation)をクリックして移動します。
「Add a step」でStepを追加します。

AppSheetエディタ左側メニュー「Bots」をクリックして移動、「Add a step」でStepを追加する。

「Step name」にステップの名前をつけます。
「請求書パス保存ステップ」と名前をつけました。

Step(ステップ)の名前を付ける。

Stepができたら、クリックして選択します。
「Run a task」をクリックして、Stepの種類を「Run a data action」に変更します。

「Run a task」をクリックして、Stepの種類を「Run a data action」に変更する。

右側に設定パネルが開きます。
はじめに「Set row values」をクリックして選択します。
次に「Set these column (s)」で「請求書ファイル」を選択し、三角フラスコアイコンをクリックします。

Set these columnに値を設定したい列を追加して、式を設定する。

Expression Assistantに以下の式を入力します。

【請求書のパス式】

"/appsheet/data/" & CONTEXT("AppName") & "/Files/" & [請求書番号] & "-" & [トリガ] & ".pdf"

式の中に、CONTEXTというAppSheet関数を使用しています。
CONTEXT関数は、引数に指定したキーワードに基づいて情報を返す関数です。
「"AppName"」というキーワードを指定すると、アプリ名を返してくれます。

CONTEXT関数
CONTEXT( "AppName" ) => アプリ名を返す

式全体としては、

  • Googleドライブ内の「appsheet」フォルダ内の
  • 「data」フォルダ内の
  • 「アプリ名(請求書)」フォルダ内の
  • 「Files」フォルダ内の
  • 「請求書番号-トリガ.pdf」というファイル

という意味になります。

Expression Assistant は以下のようになります。

Expression Assistantに式を入力する。

では、AppSheetで請求書を発行してみましょう。
請求書を選択して、「請求書発行」Actionボタンをクリックして発行します。

「請求書発行」Actionボタンをクリックして発行する。

請求書が発行され、Googleドライブに保存されると「請求書ファイル」に請求書のファイル名とリンクが表示されます。
リンクをクリックすると、請求書が表示されると思います。

「請求書ファイル」に請求書のファイル名とリンクが表示される。

スプレッドシートの「請求書ファイル」列に、請求書PDFのパスが保存されています。
アプリではこのパスをリンクとして表示しています。
これで、わざわざGoogleドライブにアクセスしなくても請求書を表示したり、別の場所に保存できるようになりました。

スプレッドシートの「請求書ファイル」列に、請求書PDFのパスが保存される。

以上で、請求書アプリが完成しました。
このアプリを作ることで、SELECT関数の使い方やAppSheet Automationによる自動化を学ぶことができました。
AppSheetアプリの使い方を身につけるにあたり必須で重要なスキルが含まれています。
是非、ご自身で作ってみてください。

今回はPDFでしたが、「Create a new file」はExcelのファイル作成もできます。
以下のブログ記事では、Excelで請求書ファイルを作成する方法を解説しています。

また、作成した請求書を「メールに添付して送信したい」という場合は、「Send an email」というTaskを使用します。
「Send an email」の解説も用意しているので興味がある方は参考にしてください。

Share Me!

前の投稿
AppSheetで請求書アプリ(第6回)Google Docs で請求書のひな形を作成
次の投稿
AppSheet と Gmail が統合 – dynamic email でできること

関連記事

メニュー