jeyseni's diary

「ジェイセニ」と呼んでください。批判ではなく提案をするのが生き甲斐です。

google appsheetに新規レコード追加時に自動連番入力--やっと使えるようになった感じ

google appsheet続報--カスタマイズは少しクセがあり,ファイルメーカー代替はムリかも - jeyseni's diary (hatenablog.com) (2024/4/23)の続報である。

 google spreadsheetから表を読み込んで基本データベースを作成し,条件に従って文字色や太字化をして見栄えは良くなった。ところが,新規レコードを追加しようとして,日付フィールドが「入力必須フィールド」となっていた。複数のフィールドが必須状態になっており,これを確定しなければ入力が確定できなかった。

 とりあえず,入力必須は解除したのだが,ナンバリングフィールドが入力必須で,しかも同じ数字が入らないことが条件のフィールドだった。自動的に連番を入力できるようにしたかった。

 これがなかなか難解だった。ファイルメーカーなら,どのフィールドでも「新規作成時に自動入力」を自由に設定できる。今日の日付でも,任意の数字からの連番作成でも,固定テキストでも,何でもできる。一方,appsheetでは,1つは関数を使う方法が紹介されていた。ナンバリングフィールドの「最大値に1を加える」という関数を入れる方法なのだが,なぜかどんどん大きな数字に変わって行ってしまう。

 appsheetでは「_RowNumber」というフィールドが自動的に作られる。この数字が連番であり,重複なしという条件に叶っている。そこで,新規レコード作成時にナンバリングフィールドの値をこの_RowNumberフィールドの値を入れるようにしてみた。

 とりあえずこれで,自動連番入力ができるようになり,それらしく使えるようになってきた。ただ,レコードを消去したら,この関係がどうなるかはまだ検証していない。

 仕事では,会議のときにタブレットを持ち込み,クラウドのデータを表示し,その場で追加情報を入力する,という操作ができるようになった。

 このappsheetに新規入力すると,基になっているspreadsheetにもデータが追加されたのが確認できた。spreadsheet側で修正しても,appsheet側に反映される。おもしろい関係である。ただし,シンクロは瞬時に行われず,1レコード0.5秒ほどかかる。今回,日付フィールドを全面的に修正したため,70レコードが更新されたのだが,シンクロに1分ほどかかった。シンクロ中に操作したらどうなるのかとか,操作性についてはまた確認する必要があるだろう。

 また,複数の人がアクセスした場合の動作についても確認は必要である。appsheetを複数の人でアクセスするには,サブスクリプションが必要になる。社内で共有するには,spreadsheet側にアクセスしてもらうことで,費用を掛けずに共有作業ができるだろう。ただ,spreadsheetが正規化できない,つまり表をごちゃごちゃに触ってしまうと,そのデータがデータベースに反映されてしまい,データベースの意味がなくなる危険も予想される。appsheetである程度機能を構築できたら,spreadsheetと切り離せることが望ましいかもしれない。そういう機能があるかどうか,また確認してみたいと思う。

 何しろ,1つの機能を加えるたびに,ネットの皆さんの知恵を拝借しなければならないから,まだまだ時間がかかりそうである。