AppSheet Automationの使い方(2)「Create a new file」でファイル作成

folder_openAppSheet

請求書アプリのユースケースで、 AppSheet Automationのタスク(Task)設定をマスターします。
前回(第1回)は、Automationに用意されている6つのTaskの使い方と活用事例について紹介しました。
今回から、実際にタスクの設定をやってみましょう。
前回の解説で追加済のステップ(Step)に「Create a new file」というタスクを設定してみます。

この記事で使用する請求書アプリは、ブログで解説している請求書アプリ(7回シリーズ)です。
ブログを読んでアプリを自作していない場合は、メルマガ購読者特典のサンプルアプリをダウンロードしても大丈夫です。

1. AppSheet ではExcelのファイル作成もできる

「Create a new file」というタスクを使うとファイル作成ができるようになります。
このブログでは、請求書アプリで「Create a new file」を使って請求書をPDFで発行しました。

「Create a new file」はPDF以外のファイル作成もできます。
今回は、Excelの請求書作成にチャレンジしてみます。

また、「Create a new file」では、テンプレートを使ってファイルを作成します。
PDFの請求書では、Googleドキュメントを使ってテンプレートを作成しました。

今回は、テンプレートとしてExcelのファイルを使用します。

はじめにお断りしておくと、請求書のような帳票発行においてはPDFがオススメです。

Excelは細かい調整が必要で、なかなか思うようなレイアウトにならず、PDFと比較するとかなり面倒です。
通常なら、請求書アプリの第6回第7回を参考にして、PDFを作成した方がよいでしょう。

今回の「Create a new file」Excel編は、あくまでチャレンジという感じです。
サンプルファイルを用意しているので、応用編としてやってみましょう。

2. Create a new fileを設定する

「Create a new file」の設定を始めましょう。

アプリエディタ左側メニュー「Automation」をクリックします。
Botsナビゲーションパネルで、前回(第1回)で作成した「Automation」ボットを選択します。

前回(第1回)で追加した「請求書発行」ステップをクリックします。

エディタ画面右側に Settings ペインが開くので、「Create a new file」ボタンをクリックして選択します。

「Create a new file」タスクの設定項目を以下のように設定します。

設定項目
Table name タスクを実行するテーブルです。ここでは「請求書」を選択します。
HTTP Content Type ファイルのコンテンツタイプを選びます。ここでは「XLSX」を選びます。
ファイルタイプには、CSV、HTML、ICS_Calendar、JSON、PDF、XLSX、XMLがあります。
Template ファイルのテンプレートを設定します。後で選択します。
File Store 「Default」のままでよいです。

Templateは、ファイルのテンプレートを選択します。
今回はExcelで請求書を作成するので、 サンプルとしてExcelのデータを用意しました。
下のExcelアイコンをクリックして、データをダウンロードしてください。

GoogleドライブにExcelのファイルをアップロードする

Googleアカウントにログインして、GoogleドライブにExcelのファイルをアップロードしましょう。

では、テンプレートを読み込みましょう。Templateの書類アイコンをクリックします。

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

さきほどGoogleドライブにアップロードしたExcelファイル「請求書テンプレート_Excel.xlsx」を選択して、「Select」をクリックします。

テンプレートのExcelファイルが読み込まれると、「DocID=1xxxxxxxx」のようにドキュメントIDが表示されます。

続けて、ファイルの保存場所やファイル名の設定項目は以下の通りです。

設定項目
File Folder Path ファイルを保存する場所(Googleドライブ)を指定します(空欄でも可)。
空欄の場合は、アプリフォルダ内に「Files」というフォルダが自動的に作成されて、その中にファイルが保存されます。
File Name Prefix ファイル名を設定します。入力フィールドをクリックして、式で動的に設定することができます。
Disable Timestamp? トグルボタンをONにして有効にすると、ファイル名にタイムスタンプを追加しません。デフォルトではOFFになっているので、ファイル名にタイムスタンプが追加されます。
ここでは、ONにして有効にしておきます。

 

File Folder Path(ファイル保存場所)は、ここでは空欄にしておきます。
アプリフォルダ内に「Files」というフォルダが自動的に作成されて、その中にファイルが保存されます。

File Name Prefix(ファイル名)は式で設定しましょう。
入力フィールドをクリックします。

Expression Assistantが開くので以下の式をコピペします。

 

この式の意味は、

  • 取引先名
  • 「請求日」列の日付を8桁の数字に変換
  • 「トリガ」列の数字

を組み合わせて、重複がないようにファイル名を作成します。

Expression Assistantに以下のようにコピペして「Save」します。

Disable Timestamp? は、タイムスタンプを追加したくないので、ONにして有効にします。

最後に、「HTTP Content Type」がPDFの場合はファイルサイズに関する設定があります。
今回は、XLSX(Excel)なので設定がありません。以上で「Create a new file」の設定は完了です。

設定項目
Attachment Page Orientation Portrait(タテ)かLandscape(ヨコ)か選択します。
Attachment Page Size ページサイズを選択します。
Use Custom Margins デフォルトのままで問題ありません。

3. Excelファイルの作成は調整が必要

さっそく、ボットを実行して請求書をExcelで作成してみましょう。
エディタ画面右側のプレビューで、タブメニュー「請求書」を選択します。
作成済みの請求書をひとつ選択します。

ボットを実行するためのActionは、請求書アプリ(第7回)で既に作成済みです。
「請求書発行」ボタンをクリックするとボットが実行されるので、クリックしてみましょう。

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

Googleドライブに「AppSheet」というフォルダがある。

アプリフォルダを開いてみましょう。
「請求書アプリ-xxxxxxxx(ユーザーのアカウントID)」というフォルダがあります。

「Files」というフォルダの中に請求書Excelが保存されているでしょうか?

では、請求書のExcelファイルを開いてみましょう。
表示がおかしくなっていませんか?

実は、Excelをテンプレートにしてファイルを作成する場合、テンプレートの調整が必要になります。
その調整法について解説する前に、テンプレートの作成についておさらいしておきましょう。

4. AppSheetではタグを使って差し込みできる

GoogleドライブにアップロードしたExcelのテンプレートファイルを開いてみましょう。

タグの使い方

AppSheetでは、テンプレートに列の値を差し込む時に「タグ」を使用します。
タグは以下のように、<<>>内に[列名]を記載します。

タグ

<<[ 列名 ]>>

例えば、請求書の請求日は以下のように書きます。

  • <<[請求日]>>

テンプレートでは以下のような感じになっています。

参照テーブルの値はリレーションを利用する

取引先情報は「請求書」テーブルから「取引先」テーブルを参照して、必要な列の値を取得します。
請求書アプリ(第3回)で「請求書」テーブルと「取引先」テーブルにリレーションシップを設定しているので、それを利用します。

参照テーブルから値を取得するタグの書き方は以下のようになります。

参照テーブルの値を取得するタグの書き方

<< [ Ref を設定した列名].[参照テーブル内の列名 ] >>

「取引先」テーブル内にある「取引先名」を取得する場合は以下のように書きます。

  • [取引先].[取引先名]

テンプレートでは以下のようになっています。

StartタグとEndタグの使い方

請求書明細は「請求書」テーブルにある「Related 明細s」列から明細リストを取得します。
取得した明細行を表組にするために、StartタグとEndタグを使用します。

Startタグ、Endタグ

<< Start: [ Related テーブル名s ]>>
<<[列名]>><<[列名]>><<[列名]>>...
<<End>>

テンプレートでは以下のようになっています。

5. Excelのテンプレートを調整する

再度、Excelの請求書を見てみましょう。
以下の三点の表示に不具合があることがわかります。

  1. 取引先情報の「御中」、「請求金額」「(税込)」などの文字列が表示されない
  2. 単価、金額、小計、消費税、合計欄が通貨表示されない
  3. 日付が「45199」「45260」などの数字になっている

この不具合を解消するために、Excelのテンプレートでは以下のように設定しておきましょう。

  1. セル内にタグと文字列を混在させない
  2. 通貨と日付は表示形式を設定する

セル内にタグと文字列を混在させない

取引先名を表示するセルを選択してみましょう。
セル内に、取引先を取得表示するタグと「御中」という文字列が書かれています。

同じように、タグと文字列が混在しているセルがいくつかあります。

  • 請求日
  • 支払期日、備考

AppSheetでは、セル内にタグと文字列が混在している場合はタグを優先して表示し、文字列は消えてしまいます。

Excelのテンプレートを修正してみましょう。
直接テンプレートファイルを修正してもよいですし、修正版のExcelのデータを用意したのでダウンロードして使ってもよいです。下のExcelアイコンをクリックしてください。

修正版のExcelのデータを用意したのでダウンロードする。

テンプレートファイルを修正する場合は、Templateの「View」をクリックします。

テンプレートファイルが開いたら「アプリで開く」をクリックして、「Googleスプレッドシート」を選択します。

GoogleスプレッドシートでExcelファイルが開くので、編集できるようになります。

はじめに、タグと文字列は混在しないようにセルを分けましょう。

取引先名はA3にタグ、C3に文字列「御中」に分けてみました。

請求金額、支払期日、備考も、以下のようにタグと文字列のセルを分けます。

請求日も以下のようにセルを分けます。

通貨と日付は表示形式を設定する

通貨と日付は、Googleスプレッドシートの書式設定オプションで表示形式を設定します。

はじめに通貨の表示形式を設定します。
請求金額の<<[合計]>>セル(以下の例では、B9)を選択した状態で、表示形式(123)をクリックし「カスタム通貨」を選択します。

「日本円」を選択して「適用」をクリックします。

同じ要領で、単価、金額、小計、消費税、合計のセルも表示形式を「日本円」にしましょう。

続けて日付の表示形式を設定します。
支払期日の<<[支払期日]>>セル(以下の例では、B11)を選択した状態で、表示形式(123)をクリックし「日付」を選択します。

同じ要領で、請求日の表示形式を「日付」に設定しましょう。

以上で、Excelテンプレートファイルの調整は完了です。
ボットを実行して、請求書ファイルを作成してみましょう。

今度は正しく表示されたでしょうか。
AppSheetのサーバーにキャッシュが残っている場合があるので、すぐに修正が反映されない場合があります。
何度か「Save」したり、リロードするとキャッシュがクリアされるので、試してみてください。

以下のようになっていれば成功です。

6. Excelファイルのメリットとデメリット

「Create a new file」タスクで請求書をExcelで作成してみました。
Excelファイルの作成には以下のような特徴があります。
Excelは、PDFと比較して必ずしも優位性があるとは限らず、一長一短という感じです。

Excelのメリット

実は、AppSheetでPDFファイルを作成すると、日本語フォントが中国語っぽい感じで表示されるという問題があります。
例えば、消費税の「消」の文字は以下のように表示されます。

AppSheetでPDFファイルを作成すると、日本語フォントが中国語っぽい感じで表示される。

原因はおそらくAppSheetのバックエンドサーバーが海外にあるため、ロケール設定が日本語に対応していないからと推察されます。
なので、AppSheetエディタ側の設定では、フォント問題を克服することはできません。
フォントがどうしても気になる場合は、Excelによるファイル作成を検討してみてください。

作成後は、普通のExcelファイルとして操作することができます。
ページ番号設定をしたり、PDFを作成することもできます。

Excelのデメリット

PDFと比較すると、Excelのテンプレートは調整が必要で設定に手間がかかりました。
他にも、

  • テンプレートに画像ファイルを配置しても出力できない。
  • レイアウトが自由にできない

というデメリットがあります。

例えば、請求書に会社のロゴや社印の画像を入れたい場合があると思います。
テンプレートファイルに画像を配置しても、AppSheetでは無視されるようで画像が出力されません。
Googleドキュメントのテンプレートなら画像の出力ができるので、この点はExcelのデメリットです。

請求書レイアウトについては、明細行を最下部にする必要があります。
仮に、明細行の下に小計、消費税、合計欄を置いたとしましょう。

明細行の数が増えると、上書きされて消えてしまいます。
Excelでは行を挿入して増やしてくれるわけではないので、このようになります。

以上よりPDFとExcelを比較すると、設定が簡単なPDFの方に分があるような気がします。
Excelで請求書については、

  • どうしてもフォントが気になる
  • ロゴや社印などの画像は不要である
  • レイアウトにこだわりがない

場合に検討してもよいでしょう。

次回(第3回)は、「Send an email」でボットからメール送信するTaskを設定してみます。
「Send an email」では添付ファイル作成も同時にできるので、請求書作成 → メール送信ならこのタスク一発でワークフローを自動化できます。
是非、挑戦してみてください。

Share Me!

前の投稿
AppSheet Automationの使い方(1) 6つのTaskでできること
次の投稿
AppSheet Automationの使い方(3)「Send an email」でメール送信

関連記事

メニュー