AppSheetではスマホなどのカメラを使用して画像や写真を保存することができます。そのときに、画像や写真の保存名を指定した命名ルールで保存したいことがあります。例えば、保存したタイミングの日時などのタイムスタンプを画像や写真の名前にするなどです。
ここではそういった画像保存時の名前をAppSheetに任せるのではなく、こちらで指定する方法についてまとめています。
デフォルトの保存名はどうなるか?
デフォルトの画像の命名ルール
まず、AppSheetのデフォルト設定の場合、画像を保存したときのファイル名はどうなるかですが、これは以下のような命名ルールになっています。
キー名.カラム名.固有のID番号
実際には以下のようなファイル名となります。
13.画像.084004.png
これは、キーが「13」、カラム名が「画像」、AppSheetが指定したユニークなIDが「084004」という形になっています。
デフォルトの画像の保存先
なお、上記の画像は「テーブル名_Images」というフォルダが自動生成され、その中に保存されます。
テーブル名_Images
画像を保存するフォルダが生成されるのは、Googleドライブの元のスプレッドシートがある場所です。(※AppSheetで指定しているDefault app folderではありません)
このため、カラムに保存される画像の値は以下となります。
貸出管理マスター_Images/13.画像.084004.png
画像の名前を変更/指定する方法
結論から言うと、AppSheetがデフォルトで指定している以下の命名ルールを変更することはできません。
キー名.カラム名.固有のID番号
だからといって、画像に名前を指定することができないというわけではありません。
1つの方法としては、画像カラムがあるテーブルのキー名を保存したい画像の名前にすることです。この方法を使えば、画像の名前でその画像が何を示しているのかを把握できるようになります。
ただし以下の点に注意する必要があります。
簡単に言うと、バーチャルカラム以外のカラムをキーとして使用し、その値は必ず固有になるようにすればOKです。
実例1:指定したキー名を画像ファイルの名前にする方法
テーブルのスキーマ
例えば、以下のような「画像一覧」テーブルがあるとします。IDカラムをキーに設定します。
このとき、キーには画像ファイルをファイル名で識別できるように以下のような数式を INITAL VALUEに設定します。
CONCATENATE([日付],"-",[カテゴリー],"-",[_RowNumber])
固有の数値になるように末尾で「_RowNumber」カラムの値を指定しています。
画像のファイル名
この状態で画像を保存してみます。このときIDは以下のように「04/11/2024-燃料費 , 消耗品-3」となっています。
するとテーブルには以下のようなパスが保存されます。
画像一覧_Images/04-11-2024-燃料費 , 消耗品-3.画像.040911.png
ファイル名の部分を見てみるとKEYに設定しているIDカラムで指定したとおり、「04-11-2024-燃料費 , 消耗品-3.画像.040911.png」となっています。
もちろん、Googleドライブに保存されたファイル名もその通りになっています。
これで、画像をファイル名で識別できるようになりました。
実例2:バーチャルカラムでCONCATENATEで指定した文字列は反映されない(カラム名は反映される)
デフォルトの状態
例えば、以下のような「本一覧」テーブルがあるとします。現時点でキーは最初の列の「No」に設定されています。
KEYは「書籍名」カラムに設定しています。
このため、画像を保存したときのファイル名は以下のようになります。
本一覧_Images/TEST.画像.083856.png
キーを変更する
画像の名前指定したい値をキーに設定するために、キーとなるバーチャルカラムを追加します。
AppSheetで対象のテーブルを選択し、「Add virtual column」をクリックします。
カラム名を「_KEY画像用」とし、App formulaを「CONCATENATE([No]”-“[書籍名])」とします。アプリ上でユーザーに表示する必要はないので「Show?」のチェックは外しておきます。
「Done」をクリックしてバーチャルカラムを追加したら、「KEY?」にチェックを入れます。
これにより、作成したカラムの値はFORMLAで指定した通りになります。
画像名用のキー設定時の注意点
画像名用のキーを設定する場合は、必ず固有の値になる数式を設定する必要があります。
ここではApp formulaに下記数式を指定しています。
=CONCATENATE([No],"-",[書籍名])
これは「No」カラムの値と「書籍名」カラムの値をハイフンでつないだ文字列を設定するという意味です。CONCATENATEは連結という意味で、この関数を使うと値を連結できます。
このとき、「No」は行ごとに固有の値になるため、同じキー名がつくことはなく必ず一意の値となります。
保存した画像名の確認
この状態で新たに画像を追加してみます。CONCATENATE([No],"-",[書籍名])
を指定しているため、画像のファイル名も「11-書籍名」のようになるべきです。
ところが、文字列で指定した「-(ハイフン)」が勝手に省略され、カラム名のみが適用されています。
今のところ、同一のテーブル内でバーチャルカラムを作成して、CONCATENATEを使てキーを設定した場合に、文字列の部分は画像には適用されないようです。