AppSheetでタスク管理アプリ(第3回)スライスでデータを切り出す

folder_openAppSheet

タスク管理アプリを作りながら、AppSheetの使い方を学びましょう。
前回(第2回)はAppSheetアプリを生成してテーブルと列を設定しました。
今回はカンバンボード用のスライスを作成します。
スライスはAppSheetでよく使う機能なので、この機会にマスターしておきましょう!

【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。

Switch to the legacy editor」で旧エディタに切り替える。

1. AppSheetでタスクを追加してみる

前回(第2回)までの準備で、タスクを追加、更新、削除する準備ができています。
ここで、実際にAppSheetでタスクを数件、追加してみましょう。

AppSheetエディタの右側にあるプレビュー画面は以下のようになっていると思います。
タブメニューで「タスク」をクリックして、「+」ボタンをクリックします。

AppSheetプレビュー画面で「+」ボタンをクリック。

タスクを追加するフォームが表示されるので、各項目を入力していきます。
ドライブとノートは追加しなくてもよいです。

タスクは3つくらい作りましょう。期日は、

  • 今日の日付の1日前(期日超過用)
  • 今日の日付
  • 今日の日付から3日後

の3種類を作っておくとよいと思います。

タスクを実際に作ってみる。

タスクを3件、追加しました。

AppSheetアプリにタスクを追加した。

2. AppSheetではスライスでレコードを切り出す

AppSheetにはスライスという機能があります。
スライスは、テーブルから特定の条件に合致するレコードを切り出す(スライスする)ことができます。
特定条件のレコードのみを取り出して表示する仮想テーブルのようなイメージです。

スライス

テーブルから特定の条件でレコードを切り出す

例えば、

  • 進行中の案件のみ表示したい
  • 自分にアサインされた案件のみ表示したい
  • 当月の記録のみ表示したい

のような時に、AppSheetならスライスを使うのが得策です。
タスク管理アプリでは、

  • タスクを「進捗状況」で分けて表示する
  • タスクを「期日までの日数(超過を含む)」で分けて表示する

ために使います。

3. カンバンボードのスライスを作成する

タスク管理アプリではカンバンボードでタスクを管理します。
「タスク」テーブルの「カンバン」列の値でカンバンのステータスを変えることができます。
これをボード形式で表示するためにはスライスが必要になります。

カンバンボードは「タスク」テーブルのデータを使用して表示します。
カンバン列の値、「未着手」「作業中」「完了」それぞれでレコードを切り出したスライスがあればカンバンボードが作れます。
カンバンのスライスを1つ作ってみましょう。

AppSheetエディタの左側メニュー「Data」をクリック → タブメニュー「Slice」をクリックします。
「New Slice」をクリックして新しいスライスを作成します。

AppSheetエディタで新しいスライスを作成する。

まずは「未着手」用のスライスを作成します。

  • Slice Name:「未着手」
  • Source Table:「タスク」

と設定します。
次に、Row filter conditionのフィールドをクリック → Create a custom expression をクリックします。

「未着手」用のスライスを設定する。

Expression Assistant が表示されます。
以下のように入力して「Save」してください。

「未着手」についてAppSheet「Expression Assistant」を設定する。

これで「未着手」用のスライスができました。

同じ手順で「作業中」「完了」のスライスも作成しましょう。
「New Slice」で新しいスライスを作成して、以下のように設定します。

作業中スライス 完了スライス
Slice Name 作業中 完了
Source Table タスク タスク
Row filter condition [カンバン] = "作業中" [カンバン] = "完了"

4. 期日用のスライスを作成する

タスクの「期日」を基準としたスライスを作成してみましょう。

  • 期日まで5日以内
  • 期日当日
  • 期日超過

でスライスを分けてカンバンのようにボード表示すると、タスク管理アプリで期日管理も可視化できるようになります。

まずは「期日まで5日以内」用のスライスを作成します。
カンバンボード用のスライスと同じ手順です。

  • Slice Name:「期日まで5日以内」
  • Source Table:「タスク」

と設定します。

Row filter condition → Create a custom expression → Expression Assistant は以下のように入力します。

AppSheet「Expression Assistant」に式を入力する。

入力した式は以下のようなものです。コピペして使えます。

期日まで5日以内の Row filter condition

AND(
 HOUR( [ 期日 ] - TODAY() ) / 24 <= 5,
 0 < HOUR( [ 期日 ] - TODAY() ) / 24,
 [ カンバン ] <> "完了"
)

この式には、ANDというAppSheet関数が使われています。

()内に列挙した条件がすべてTRUE(真)の時のみ、TRUE(真)を返します。
上の式の場合、「AND()内にある3つの条件式がすべてTRUE(真)」のレコードが「期日まで5日以内のタスクである」と判定されて、テーブルから切り出されます。

AND()

AND ( 条件1, 条件2, ・・・)

今日の日付が期日から何日前(何日後)かを調べるために、

  •  [期日] - TODAY()

という式を設定しています。TODAYというAppSheet関数は今日の日付を返します。

ここで「何日前(何日後)」かを計算するために、HOURというAppSheet関数を使用しています。
HOUR関数は()内の値を「時間」の値にして返します。
上の式の場合、「期日と今日の日付の差」を「時間」に直します。
よって、HOUR関数の結果の値を24で割り算をすると、日数を計算できます。

HOUR()

HOUR ( 日時の値 )

3つの式のうち上の2つは、比較演算子を使って、

  • 期日までの日数が5以下
  • 期日までの日数が0より大きい

となり、レコードの期日が今日よりも「1日〜5日前」のレコードのみを切り出すことができます。

最後に、

  • [ カンバン ] <> "完了"

という式があります。これは「カンバン」列の値が「完了ではない」ということを意味します。
つまり、「カンバン」が「完了」したレコードは表示しないということです。

値1 <> 値2

値1 <> 値2(値1と値2は等しくない)

以上、3つの条件式を満たしたレコードが「期日より5日以内」のレコードとして切り出されます。

続けて、

  • 期日当日
  • 期日超過

のスライスも作成しましょう。

期日当日スライス 期日超過
Slice Name 期日当日 期日超過
Source Table タスク タスク
Row filter condition AND (
[期日] = TODAY(),
[カンバン] <> "完了"
)
AND(
HOUR ( [ 期日 ] - TODAY() ) / 24 < 0,
カンバン] <> "完了"
)

以上、カンバンボードと期日表示のためのスライスを作成しました。
スライス本体はアプリには表示されないため、現時点ではその威力が明らかではありません。
次回、スライスを使用してViewを作成しますので、タスク管理アプリのイメージが掴めるようになると思います。

次回(第4回)はタスク管理アプリの見た目(View)を設定します。カンバンボードを実際に作ってみましょう。

Share Me!

前の投稿
AppSheetでタスク管理アプリ(第2回)スプレッドシートからアプリ作成
次の投稿
AppSheetでタスク管理アプリ(第4回)ダッシュボードでカンバン作成

関連記事

メニュー