Googleスプレッドシート&AppSheetでリテイク管理
はじめに
GoogleがAppSheetを買収したという記事を見かけ、初めてAppSheetというものを知った。そこで、少し遊んでみたら結構使いやすそうだったので実務に取り込んでみようとした。試しに撮影部のラッシュチェックでのリテイク管理アプリを作成してみた。
Googleスプレッドシートアプリ。入力インターフェースとしては...🤔
Googleスプレッドシートで何かしら管理していることも少なくないと思う。このスプレッドシート、PCで操作するならまだしも、スマホやタブレットで入力するにはちょっと使いづらい。スマホ用アプリがあるとはいえ、ボタンがごちゃついていたり、次のセルを選択するのが面倒だったり、快適とは言えない。
でもPCが無い場所から入力したいことは往々にしてあるので、スマホから入力はしたい...。
そこでAppSheetを入力インターフェースとして使うと快適だった。
AppSheetって?
ノーコード(プログラミングせずに)でスマホアプリが作れちゃう。タブレット、PCでも使用可。
データベースとなるファイルと紐付けして、そのデータをアプリから編集することが出来る。アプリからだけでなくデータベースを直接編集してもよいところもまた良きかな。
連携できるアプリはGoogleスプレッドシート、Box、Dropbox、他色々ある。
サンプルアプリがとにかく豊富なので、サンプルアプリを巡回していると何かひらめくかもしれない。
Googleが買収して、GoogleWorkSpace(旧GSuite)の一部となったが、それに加入していなくても制限付きで無料で使える。
詳しくは先達がいろいろ記事は書いているのでそちらを見てほしい。
SMS、プッシュ通知やメールを送信したり、QRコードを読み取ることも出来る。カット袋にQRコードを貼っておけば、それでIN/UPのチェックをすることも出来る、かもしれない。(私はまだその域に達していない)
こんなん出来ました
ラッシュルームなど、自分のPCから離れた状態でチェックしている時は、AppSheetのアプリからデータを入力していく。スマホで片手でその場で入力できるのがいいところ。設定次第で、ドロップダウン、ラジオボタンなど、入力方法はAppSheetの設定で様々に変更できる。また、入力の都度データ送信して更新するか、まとめて手動で送信するかなども選べる。
AppSheetから送信したデータは連携しているデータベース(例えばGoogleスプレッドシート)に追記される。自席に戻ってリテイク作業をするときはPCでスプレッドシートを開いた状態にしておく。レンダリング開始して、済んだものは担当者が自分で✅マークをONにする。
スプレッドシートにグラフを用意すると、オシャレ度がアップ。データ分析してる感が出てテンションが上がる。各人の状況が見えるので、ラッシュチェックまでにリテイクが間に合いそうにない人を見つけやすくなり、誰かが代わりに作業する、ということも早めに判断できるし、リテイク理由もすぐ分かる。
AppSheetアプリからはデータの追記だけでなく編集・削除も可能なので、そちらで管理したければ、それも可能。無料版だと1アプリにつき10人までしか招待できないっぽい(詳しく調べてない)。
AppSheet。ざっと。
まだ試行錯誤中なので、わかったところだけ簡単に書いてみる。
先にデータベース用ファイルを作成しておく
データベースなので、データベースの形式で。つまり1行目が見出し、2行目以降が実データという構成。よくやりがちな、対戦表みたいに行と列に見出しが存在するものはダメ。それはピボットテーブルなどで作るもの。基本的にデータベースというのは人間が見に行くものではない。人間が見やすい形のデータを作るための元になるデータとして考える。
人間が見るものではないので、本来装飾は必要ないが今回は作業者がスプレッドシートで直接データを書き換えるなどしたいので背景色などで装飾している。
可能なら予めダミーデータを入力しておくと、この後のアプリ開発時にAppSheetが「この機能いるっしょ!」「この見た目がいいっしょ!」て感じで提案してくれるので開発が少し楽になる。
アカウント作成など
特に難しくないので説明不要だと思うが、わからなければググってください。
新規アプリ作成
「Make a new app」てのがあるのでそこから作成する。データベースと連携するかなど聞かれてくるので、好きなように設定する。
左側のメニュー
アカウント作って、データベース選択などすると、いよいよ作成画面になる。
左側に出てくるメニューを簡単に説明したのが右図。特に重要なのは次の3つかと思われる。
Dataメニュー
これが一番重要。連携するデータベースの指定、データベースの各列がどういう内容のデータなのか指定したり、データを表示する際のフィルター(条件・スライサー)を作成したりする。ここを疎かにするとアプリの使い勝手に影響する。慣れない頃は「UX」メニューと何度も行き来することになる。
UXメニュー
ここも重要。なんせ、アプリの見た目を構築してく。どんな風にデータを見せるか。カレンダー、テーブル、サムネイル、入力フォーム、グラフなど。それらをどこにどんな順番で表示するのか。また、列毎に文字の大きさや色を変える、画面の遷移先設定などもこの中で行う。まさにUXそのもの。
Behaviorメニュー
最初は無視していい。アプリを作り込んでいくと、ここが必要になってくる。
データの編集をアプリ上で行う際、データ1行ごとの編集画面に入って直すのが基本になるけど、やっぱめんどくさいよね!って時に使う(と思う)。例えばアイコンタップするだけでその行を「完了」にしちゃうとか、編集画面に入らずに一覧画面のままデータ編集しちゃおう!みたいな「アクション」を作成する。
Data
Tables
テーブル=表(ひょう)。参照するテーブル(≒シート)を登録したり、参照先を変更したり。
テーブル全体にまつわる設定をする。
Columns
Tablesで追加したテーブルの各列の設定をする
使っているものだけ説明
View Table
元のデータを開く
Add Virtual Column
バーチャルカラム(仮想列)を追加。元のデータには存在しないが、AppSheet上だけで存在する列を作成する
必ず(多分)「FORMULA」に数式を入れて値を計算させる
スプレッドシートで「表示形式」を使って見た目上の表記を変えている場合、AppSheetでも同じように表現したければ、これを使わないと多分出来ない
Regenerate Structure
データを再構築する。元データの列が増減した場合に更新するのに使う
鉛筆アイコン
列の編集画面を開く。ここから開かないと設定出来ない項目もあるが、主な項目は右図のように既に表示されているので、そこで直接編集も可能
NAME
列の名前
TYPE
列のデータ型
KEY?
この行を特定するための一意の値か?ID番号的に他の行と重複しないデータ列が必要
LABEL?
データを表示する際に見出しになる列かどうか?他の列よりも優先されて先頭に表示される
FORMULA
数式を入力するとその列の値が自動で計算される。Virtual Columnで使う。通常列だと使えない?使える?わからん
SHOW?
この列をアプリ上で表示するか否か
REQUIRE?
必須フィールドかどうか。データの追加・編集時にこの列にデータが無いと怒られる
INITIAL VALUE
その列の初期値。AppSheetのアプリからデータ追加する際に、最初から初期値が入力された状態にできる
DISPLAY NAME
列の表示名。オリジナルの列名と違う表記にしたいときはこれを使う
DESCRIPTION
未来の自分や他人がこの列の意味が分かるようにするためのメモ
Slices
スライサーを作成する。スライサーというのはExcelやスプレッドシートでも存在する。データのフィルタリングを行う機能のこと。そのフィルター条件をここで作成する。例えば、右図でいうと、
Done列がTRUEのものだけ
Done列がFALSEのものだけ
Date列が今日の日付のものだけ
という3つのスライサーを作成した。
各スライサーの設定項目については割愛する。
テーブルにダミーデータでも入れておけば、AppSheetが提案してくれたスライサーが上部に出てくる。クリックするとそれが作成されるので中の設定を見てみるとよい。すぐ理解できる。
UserSettings
ユーザーがアプリ内で自由に変更できる「設定」を作成できる。
Virtual ColumnのFORMULAで設定を参照する式を記入すれば、それに合わせて動的に表示内容を変更する...、なんてことも出来るのだと思うが、使ったことはないのでこれ以上はわからない。
UX
Views
UXの中で最重要な項目。データをどのような表示形式で見せるかをここで設定する。複数作成することができる。AppSheetではこの見せ方1つ1つのことを「View(ビュー)」と呼んでいる
View name
ビューの名前。好きに決めていい。
For this data
このビューに使うデータソースを選択する。ドロップダウンには、連携しているテーブルと、作成したスライサーが候補にあがる。テーブルを選択すると、全データを表示する。もし「このビューではフィルタリング後のデータだけ見せたい」という時はスライサーから選択する。
ViewType
超重要。ビューの見た目を選択する。それぞれどんなものかは試してみればいいが、シンプルに使うならテーブル(table)、サムネイル画像つきならデッキ(deck)とかギャラリー(gallery)とかいいのでは。formは入力フォームを作成できるが、ここで作成しなくても予め1つ用意されているので、通常は使用しなくてもよい(と思っている)。
Position
このビューをどこに表示するかを設定する。
[left most ~ right most]
基本的にはこれらのどれかを選択する。アプリ画面の下部にビュー選択のアイコンが並ぶ。選択したものによって並び順が決まる。初期状態だと2つ先約が入っているので3つまで?選べる。[UX > Options > System Buttons > Allow five views in the bottom navigation bar]のスイッチをONにすることで5つまで好きに並べることが出来る。
[menu]
これを選択するとアプリ画面左上のハンバーガーアイコンをタップで出てくるメニューの中に表示される。使用頻度が低いものはこれを選択する。
[ref]
リファレンス(reference)の意。ユーザーが直接そのビューを選択することは出来ないが、何かしらのビューから(タップなどの)アクションを起こせばそこに遷移出来る、というビューになる。
これ以外にも設定項目はたくさんあるが、触ってみればすぐ分かるので今回は割愛する。
Brand
アプリのカラーリングやアイコンなどを設定できる。重要度は低いので詳細は割愛する。
Format Rules
表示するデータの書式を設定する。条件も設定できるので、ExcelやGoogleスプレッドシートでいうところの「条件付き書式」も設定できる。
列毎に書式を設定できる。見れば分かるので各項目については書かないが、文字の大きさ、色、太字、斜体、打ち消し線、下線、大文字化、アイコンを設定できる。
[If this condition is true]で条件を設定すれば、その数式がTRUEのときだけ反応するので、すなわち「条件付き書式」とすることができる。
Options
UXに関係するアプリの設定や、ビューの種類ごとの初期設定を変更したり出来る。
General
Starting view
アプリ起動時に表示されるビュー。使い勝手的には結構重要。右側のアイコンで切り替えれば数式を入力できるので、条件によってスタートページを変化させることも可能。
Start with About
アプリ説明の画面が最初に表示される。いらないのでOFF。
Show name and email in the side menu
サイドメニューにユーザー名とメールアドレスを表示するかどうか。お好きに。
Pull to refresh
アプリの画面を下に引っ張ることで更新するかどうか。ONだと楽。OFFにした場合は右上にある更新ボタンをタップする。
System buttons
Allow five views in the bottom navigation bar
アプリの画面下部に表示されるアイコンを5つまで選択できるようにする。OFFの場合だと、データ追加用と編集用のアイコンが2つ入ってくるので、ユーザーが配置できるのは3つまでとなる。これはONで良いと思う。
Behavior
Actions
データを書き換えたり、ウェブサイトを開いたり、電話をかけたり、というアクションを作成できる。
新規追加は [New Action] から出来るが、その隣にAppSheetが提案してくれた候補のアクションがある。それをクリックすると簡単に作成が出来る。その設定を見てみればだいたい分かる。
ここでアクションを作成しておいて、[UX > Views] でビュー設定をしている時に呼び出す、という感じか。
Workflow
データに変更があったり、同期された時に実行されるアクションを作成する。数式で条件をさらに細かく指定できる。
Do this
行うアクションを作成する。Reaction で、Eメール、プッシュ通知、SMS、データ編集、ウェブフック、ファイル保存から選択できる。
Reports
毎日同じ時間にメールするなど、定期実行するアクションを作成する。有料プランでしか使用できない。
Offline/Sync
端末がオフライン時の挙動を設定できる。
Sync: App to Cloud
Sync on start
ONにすると、アプリ起動時にデータベースに接続して、起動直後は常に最新状態に保つ。ONで良いのでは。
Delayed sync
これがOFFだと、データの変更がある度にアプリが再読み込みされる。連続でデータを入力したいときなどにはこれは鬱陶しい。今回の使用目的を考えるとONにして、変更の度に更新されるのを止めるが吉。
Automatic updates
自動更新のON/OFF。ONの場合、データに何か変更を加えるとすぐに元データを更新し、30分毎に元データから取得し直す。OFFだと、更新ボタンを押したり、画面を下に引っ張ったりして手動で更新しないと変更は送信されない。ONでいいと思う。
Offline Use
The app can start when offline
オフラインでも起動できるようにする。これはONのほうがいいかも。オフライン中に加えた変更は、オンラインになったときに更新される。