AppSheetでGoogle Driveの共有ドライブを利用しようとしてハマった件

記事タイトルとURLをコピーする

G-gen の鈴木です。約1年ぶりに記事を書きます。当記事では、AppSheet を利用する際に Google Drive の共有ドライブを利用する場合の注意点を紹介します。コミュニティ等でも同じような会話が行われており、解決してないケースも多いため、解説いたします。

環境説明および事前設定

環境説明

当記事でご紹介するのは、AppSheet で共有ドライブを利用して、例えば請求書のような PDF ファイルを共有ドライブに作成、格納、参照する場合の注意点です。

今回は以下のような環境でアプリケーションの作成およびデータの格納を共有ドライブに実施することとします。

AppSheet作成時のフォルダ構成

事前設定

作成したアプリケーションで利用されるデータが共有ドライブに格納されるように、以下の設定を変更します。

アプリケーション名のアイコンをクリック > 上部「Admin」より「My Account」をクリック > Settings タブにて Default folder path を/[TeamDrive]AppSheetData/Data と設定します。必要に応じてパスは変更してください。

AppSheet のデフォルトのデータ格納先

アプリケーションの作成

スプレッドシートよりアプリケーションを作成

AppSheetData/Data/DataStore にあるスプレッドシートよりアプリケーションを作成します。今回は以下の通りの簡単なデータベースをもとにアプリを作成します。

AppSheet用データベース(スプレッドシート)

作成後のアプリケーションの設定は以下の通りです。

AppSheetのデータ設定

PDF 作成のための Automation 設定

以下の手順で Automation の設定を実施し、PDF を作成するように設定します。

データが追加されたときに PDF を作成するイベントの作成

以下の通り設定し、イベントを作成します。

Automationのイベント作成画面

データが追加されたときの実際のプロセスの設定

以下の通り設定し、レコードが追加されたら PDF を作成するためのプロセスを設定します。このときの設定は以下の通りです。

設定名
Settings Create a new file
Template Docsファイル
File Folder Path /orders/
File Name Prefix [Product_id]
Disable Timestamp? ON

※ファイルパスの簡易化のために今回タイムスタンプは付与しません。本番運用の際にはご注意ください。

Automationのイベント作成画面

テンプレートとなる Docs ファイルはどのようなものでも構いませんが、今回は以下のような簡易的なファイルを利用します。<<[]>> で囲ったデータヘッダーに実際に入ってきた値が挿入されますので、実際の見積書などを作成する場合には利用してみてください。

テンプレートで利用するDocsファイル

アプリケーションの実行確認とログの確認方法

ここまで来たら一旦 Deploy してアプリケーションの動作を確認してみてください。

以下の通り、レコードを追加したら自動的に PDF が作成されているはずです。

作成したアプリケーションの実行画面

自動生成された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")

URL作成のためのAutomation設定

再度実行してみます。
反映されない場合は、右上の更新ボタンを押して最新の状況にしてみてください。

PDF作成およびURL作成の画面

PDF が作成され、URL もデータベースのカラムとして生成されています。

作成されたPDFファイルとURL(1)

作成されたPDFファイルとURL(2)

エラーの発生

しかし生成された URL をクリックしてみるとファイルは存在するもののアクセスできず、以下のようなエラー画面になります。

PDFファイルのオープンエラー

コミュニティなど見ると様々なところでファイルが開けないとの悩みが見られます。

解決方法

原因の確認

前述のエラー解決にあたり、まずは手動でファイルをアップロードして実際どこのパスに格納されているかを確認します。PDF とは別で、画像ファイルをアップロードします。

手動でのファイルアップロード

格納後のパスを確認すると、以下の通りデータベースと同じパス /[TeamDrive]AppSheetData/Data/DataStore に画像用のフォルダが生成され、格納されています。

手動アップロード時のファイル格納パス

つまり以下のような状況になっていることがわかります。

データの自動生成時はアプリケーションのフォルダパス /[TeamDrive]AppSheetData/Data/"アプリケーション名+アプリID" を、データの参照時には /[TeamDrive]AppSheetData/Data/DataStore を、というようにアプリケーションの動作ごとに違うパスを参照していることがわかりました。

アプリケーションのデフォルトのパスを変更する

前述の差異を修正するために、以下の設定を変更しアプリケーションのデフォルトのパスをデータベースのパスを同一に変更します。

左ペインのSettings > Informationより Default app folder を /[TeamDrive]AppSheetData/Data/DataStore と設定します。 ※データベース (スプレッドシートファイル) が格納されているパスと同様にしてください。

以下のようにファイルを正しく開くことが可能になります。

作成したPDFファイルが正しく開ける場合(1)
作成したPDFファイルが正しく開ける場合(2)

※作成直後は Signature エラーで開けない場合がありますが数秒待つことで開くことが可能になります。

このように、AppSheet のデータベースとしてスプレッドシートを利用する場合、データベースとしてのスプレッドシートが格納されているパスと、アプリケーションが利用、参照しているパスが、デフォルトだと別々となっているため、注意深く設定を変更する必要があります。

鈴木 達文 (記事一覧)

執行役員 COO ビジネス推進部 部長

基本、なんでも屋。主にビジネスの立ち上げや仕組みづくりが好き

日々、努力。日々、楽しむことを大事に

 

Professional Cloud Architect / Professional Workspace Administratorのみ保持していますがそろそろ失効してしまいそうな予感。