G-gen の鈴木です。約1年ぶりに記事を書きます。当記事では、AppSheet を利用する際に Google Drive の共有ドライブを利用する場合の注意点を紹介します。コミュニティ等でも同じような会話が行われており、解決してないケースも多いため、解説いたします。
環境説明および事前設定
環境説明
当記事でご紹介するのは、AppSheet で共有ドライブを利用して、例えば請求書のような PDF ファイルを共有ドライブに作成、格納、参照する場合の注意点です。
今回は以下のような環境でアプリケーションの作成およびデータの格納を共有ドライブに実施することとします。
事前設定
作成したアプリケーションで利用されるデータが共有ドライブに格納されるように、以下の設定を変更します。
アプリケーション名のアイコンをクリック > 上部「Admin」より「My Account」をクリック > Settings タブにて Default folder path を/[TeamDrive]AppSheetData/Data
と設定します。必要に応じてパスは変更してください。
アプリケーションの作成
スプレッドシートよりアプリケーションを作成
AppSheetData/Data/DataStore
にあるスプレッドシートよりアプリケーションを作成します。今回は以下の通りの簡単なデータベースをもとにアプリを作成します。
作成後のアプリケーションの設定は以下の通りです。
PDF 作成のための Automation 設定
以下の手順で Automation の設定を実施し、PDF を作成するように設定します。
データが追加されたときに PDF を作成するイベントの作成
以下の通り設定し、イベントを作成します。
データが追加されたときの実際のプロセスの設定
以下の通り設定し、レコードが追加されたら PDF を作成するためのプロセスを設定します。このときの設定は以下の通りです。
設定名 | 値 |
---|---|
Settings | Create a new file |
Template | Docsファイル |
File Folder Path | /orders/ |
File Name Prefix | [Product_id] |
Disable Timestamp? | ON |
※ファイルパスの簡易化のために今回タイムスタンプは付与しません。本番運用の際にはご注意ください。
テンプレートとなる Docs ファイルはどのようなものでも構いませんが、今回は以下のような簡易的なファイルを利用します。<<[]>>
で囲ったデータヘッダーに実際に入ってきた値が挿入されますので、実際の見積書などを作成する場合には利用してみてください。
アプリケーションの実行確認とログの確認方法
ここまで来たら一旦 Deploy してアプリケーションの動作を確認してみてください。
以下の通り、レコードを追加したら自動的に PDF が作成されているはずです。
このとき、PDFファイルの格納はアプリケーションのデフォルトのパス /[TeamDrive]AppSheetData/Data/"アプリケーション名+アプリID"
に格納されているはずです。
もし PDF が作成されない、などの事象が起きた場合には Manage > Monitor > Automation Monitor よりエラー等が出てないか確認してみてください。
アプリケーションから PDF ファイルを参照可能とするための Automation 設定
このままだとレコード追加時に自動生成された PDF ファイルをアプリケーションから参照することができません。そのため Automation ルールにて、URL を生成するための設定を以下の通り作成します。
このとき、以下のように設定してください。
設定名 | 値 |
---|---|
Settings | Set row values |
URL | CONCATENATE("orders/",[Product_id],".pdf") |
再度実行してみます。
反映されない場合は、右上の更新ボタンを押して最新の状況にしてみてください。
PDF が作成され、URL もデータベースのカラムとして生成されています。
エラーの発生
しかし生成された URL をクリックしてみるとファイルは存在するもののアクセスできず、以下のようなエラー画面になります。
コミュニティなど見ると様々なところでファイルが開けないとの悩みが見られます。
解決方法
原因の確認
前述のエラー解決にあたり、まずは手動でファイルをアップロードして実際どこのパスに格納されているかを確認します。PDF とは別で、画像ファイルをアップロードします。
格納後のパスを確認すると、以下の通りデータベースと同じパス /[TeamDrive]AppSheetData/Data/DataStore
に画像用のフォルダが生成され、格納されています。
つまり以下のような状況になっていることがわかります。
データの自動生成時はアプリケーションのフォルダパス /[TeamDrive]AppSheetData/Data/"アプリケーション名+アプリID"
を、データの参照時には /[TeamDrive]AppSheetData/Data/DataStore
を、というようにアプリケーションの動作ごとに違うパスを参照していることがわかりました。
アプリケーションのデフォルトのパスを変更する
前述の差異を修正するために、以下の設定を変更しアプリケーションのデフォルトのパスをデータベースのパスを同一に変更します。
左ペインのSettings > Informationより Default app folder を /[TeamDrive]AppSheetData/Data/DataStore
と設定します。
※データベース (スプレッドシートファイル) が格納されているパスと同様にしてください。
以下のようにファイルを正しく開くことが可能になります。
※作成直後は Signature エラーで開けない場合がありますが数秒待つことで開くことが可能になります。
このように、AppSheet のデータベースとしてスプレッドシートを利用する場合、データベースとしてのスプレッドシートが格納されているパスと、アプリケーションが利用、参照しているパスが、デフォルトだと別々となっているため、注意深く設定を変更する必要があります。
鈴木 達文 (記事一覧)
執行役員 COO ビジネス推進部 部長
基本、なんでも屋。主にビジネスの立ち上げや仕組みづくりが好き
日々、努力。日々、楽しむことを大事に
Professional Cloud Architect / Professional Workspace Administratorのみ保持していますがそろそろ失効してしまいそうな予感。