AppSheetでチーム管理アプリづくりに挑戦(その④)
その②で作った「報告書を自動作成するBot」を実装する。
前準備
- まず前準備として[年度]テーブルのスプレッドシートに「報告書作成」カラムを追加する。
このセルの値を「NO」から「YES」に切り替えることで、Bot始動のトリガーとする。
[年度]テーブルのスプレッドシート
- [年度]テーブルのColumnsを「Regenerate Structure」を押して、カラムを再構築する。
[年度]テーブルのカラムの再構築
- 新しく用意した「報告書作成」カラムのTypeを「Yes/No」に設定
「報告書作成」カラムの設定
- [年度_Detail]のView OptionsのQuick edit columnsに「報告書作成」カラムと「メモ」カラムを追加して、Detail画面からの編集を可能にする。
[年度_Detail]ビューの設定
前準備完了後の「活動Dash」ビュー
活動報告書Botを作成する
「年度_Detail」ビューの「報告書作成」ボタンで「YES」を選択したら、PDF形式で活動報告書を作成するBotを作る。
- AutomationメニューのBotsタブから「+New Bot」を押して、Otherに開かれたBot name欄に「活動報告書」とBotの名前を入力して、「Create a custom bot」を押す。
Botの新規作成画面
- When this EVENT occurs:の「Configure event」を押すと、エディターの右側にSettingsというBotを始動させる条件を設定する画面が表示されるので、以下のように設定する。
- Event Type:Date Change → Updates only
- Table:年度
- Condition:[報告書作成] = "YES"
(説明)
[年度]テーブルの[報告書作成]カラムの値が「YES」に変更されたら、Botを始動させる。
Botの始動条件の設定画面
- Run this PROCESS:でBot始動後のプロセスを以下のように設定する。
- Step name:「活動報告書を作成」
- Settings画面でCreate a new fileを選択
- Table name:年度
- HTTP Content Type:PDF
- File Folder Path:"活動報告書/"&[ID年度]&"_"&[年度]
(説明)Gドライブの「マイドライブ/appsheet\data/(アプリ名-ID)」フォルダーの直下に「/活動報告書/(年度テーブルのID)_〇〇年度」というフォルダーを生成する - File Name Prefix:[ID年度]&"_"&[年度]&"_活動報告書"
(説明)上記で作成したフォルダー内に、「(年度テーブルのID)_〇〇年度_活動報告書(タイムスタンプ).pdf」というファイルを生成する
Botのプロセスの設定画面
- 同じくSettings画面のTemplateにある「Create」ボタンを押して、Gドキュメント文書のデフォルトの書式を生成したら、「View」ボタンが表示されるので中身を確認する。
Gドキュメントのデフォルトの書式
- 「SAVE」ボタンを押し、設定を保存する。
- Gドライブに「活動報告書」フォルダーが作られていることを確認する。
Gドライブの「活動報告書」フォルダー
- ../活動報告書/867f74c5_2022年度フォルダー内にPDFファイルが作られていることを確認する。
PDFファイル
- PDFファイルを開き、中身を確認する。
生成された活動報告書(書式はデフォルト)
Gドキュメントの書式をカスタマイズする
デフォルトのテンプレートでは表内にIDが羅列されているので、<<[(カラム名)]>>を表示させたいカラム名に置き換える。
あと、表の列幅を調整したり、センタリングなどを施して書式を整える。
テンプレートのカスタマイズ
[年度_Detail]ビューの「報告書作成」ボタンを「NO」に戻した後、「YES」に入れ直すと、新しい書式でPDFファイルが生成される。
新しくできたPDFファイル
書式をカスタマイズしたあとの活動報告書
活動報告書に対戦履歴を追加する
ここで、ちょっとした問題が生じる。
1ボタンで活動報告書に対戦履歴を追加して出力させるには、[年度]テーブルに[対戦履歴]テーブルをつなげる必要がある。
そこで、再度、リレーションを見直す。
[年度]テーブルと[対戦チーム]テーブルの中間に[年度_対戦]テーブルを設けて、[年度_行事]テーブルと並列に並べてみる。
ただし、そのままだと[年度_会員]テーブルから派生した[選手]テーブルを介して、輪廻を起こしてしまうので、少々強引だが[選手]テーブルで使用する会員はスライスした[本年度会員(slice)]テーブルを使って、輪廻を断ち切ってみる。
モデリング
[対戦履歴]テーブルを[年度_対戦]テーブルに改造をして、リレーションを確認する。
リレーション
[活動Dash]ビューと[大会Dash]ビューも変更する。
「メンバー表作成」の「YES/NO」ボタンと「検索」ボタンもついでに作る。
[活動Dash]ビューでは、行事の計画や大会の対戦結果を入力して、年度末に活動報告書と対戦履歴をPDFで出力する。
[活動Dash]ビュー
[大会Dash]ビューでは、参加する大会と選手の登録を行い、選手リストをスプレッドシートに出力する。
[大会Dash]ビュー
ファイル検索Botの作成
「メンバー表」Botは「活動報告書」Botとほぼ同じなので割愛し、「検索」ボタンの作り方をおさらいする。
- BehaviorメニューのActionタブから「+New Action」ボタンを押して、新規アクションを作成する。
アクションの新規作成
- アクションを次のように設定する。
- Action name:「活動報告書を探す」
- For a record of this table:年度
- Do this:External: go to a website
- Target:
'https://drive.google.com/drive/search?q=title:'&[ID年度]&'%20type:folder'
- Action icon:(適当なアイコンを選択)
アクションの設定
- Prominence:「Display inline」を選択して、「Display prominently」に戻す。
アクションボタンの表示方法
- 「SAVE」ボタンを押して、設定を保存する。
活動報告書の書式に対戦履歴を追加する
活動報告書の書式を変更
活動報告書の出力結果
選手リストの書式をカスタマイズする
Botでは、XLSX(エクセル)のファイル形式で出力されるので、スプレッドシートで開いて初期をカスタマイズする。
メンバー表のカスタマイズ
メンバー表の出力結果
やはりスライスが気になる。
中間テーブルが多いような気がする。
ということで、もう一度、モデリングからやり直す。