GAS実行アプリ
appsheetも所謂ノーコードアプリなため機能も限定的になります。
あともう少しこれができたらいいなぁ。
もし、もう少しがGAS(google apps script)で実現できる機能であれば、
こういったappsheetの構成はいかがでしょうか。
・概要
①GAS実行フラグ判定用のシートを作成
②appsheetのBehaviorで実行フラグのcolomunを "1" に変更するBehaviorを作成
③appsheetのAutomationで実行フラグを条件にGASを実行
④呼び出したGASの処理の最後に実行フラグをリセット
邪道と言われるとは思いますが、なんだかんだUIを自動生成してくれるappsheet
個人的にはそれだけでもかなり優秀なツール。
一方で、この形式によるGASの実行はもう少しを解決する1つの手段だと思います。
〇 フラグ判定用のシートの作成
各columunの説明
[GAS] ただの名称。appsheetのUI上の表示用
[flg] Automationの判定。デフォルトは0。1に変更時にフラグ判定
[Row] flgリセットのGASの簡略化のため。リセットする行の引数
〇 Behaviorの設定
Behaviorの名前はなんでもOK
Do thisで画像のものを選択し、set the valuesとして
実行時に[flg]に【1】を入力するルールにする。
〇 Automationの設定
Automationのeventは、
All changes とし、 Conditionを [flg] = "1"とする。
processは、
call a script とし、 対象となるGASを選択します。
今回のサンプルではGASが実行できます、というものなので1つのGASを
実行する形となっています。
本来であれば、[Row]を引数としているので、呼び出すGASの最初の処理で
Rowの値により呼び出す関数を設定することで複数のGASを実行することができます。
※GASを実行し、flgのリセットまでのGASの事例
もし興味があれば試してみてくださいね!
一定期間のデータの抽出(スライス)
業務管理にappsheetを活用しているとこういう機能が必要になってくると思います。
スライス機能では【Row filter condition】に関数を設定することで、
データの抽出が可能です。
例えば、進捗管理をするために進捗のColumnsを作成し、
予定・対応中・完了のような進捗管理をする場合。
完了した業務は表示であれば、
[進捗] <> "完了"
と関数を入力することで実現することができます。
簡単ですね!
この関数は、『進捗』というカラムのデータが『完了』ではないという条件
を示す関数となります。
※ <>はイコールの否定です。
話が少し逸れましたが、同様に本題の一定期間のみ表示したい場合の関数です。
基本的には当日の日付を元にすることになると思います。
例えば、今日から前後1か月のデータのみ抽出をしたい場合です。
※以下の記載は厳密には1か月ではなく、30日です。
AND(
HOUR( [日付] - TODAY() ) / 24 < 30,
HOUR( [日付] - TODAY() ) / 24 > -30
)
この関数についての説明です。
『AND()』の関数は、括弧内に記載して関数を全て満たす場合という関数です。
日付の差が30より大きいか、小さいかの条件を設定しています。
ここでポイントですが、appsheetで日数の差等を計算する場合は
『HOUR()』関数を使用します。
上記の関数では、『日付』というColumnan(TypeはDate)と
当日の日付(TODAY())の差をHOUR()関数で換算し、
24時間で割ることで日数を算出することができます。
これはこの形で覚えてしまう方がいいかなと思いますね。
考え方としては難しくはないと思いますので、一度知ってしまえば簡単だと思います。
また、少し応用例として。
毎月の定例業務ではなく、年間の定例業務に関して管理をしたい。
そういう場合に全ての業務をappsheet内に登録をし、
翌年以降も予定が近づいた場合に自動的に表示をしたいときは
以下のようにするといいかと思います。
※実際に私が作成した社内の業務管理アプリでも使用もしています。
IF(
YEAR( [日付] ) >= YEAR( TODAY() ),
AND(
HOUR( [日付] - TODAY() ) / 24 < 30,
HOUR( [日付] - TODAY() ) / 24 > -30
),
AND(
HOUR( [日付] - TODAY() ) / 24 + 365 < 30,
HOUR( [日付] - TODAY() ) / 24 + 365 > -30
),
)
前年実績で業務データを参照すると年度が1年ズレてしまうため
上手く計算ができません。
そのため、年度を比較して期間の判定式を分岐させることで
前年実績からも問題なく表示をすることができますね。
プルダウンメニュー
appsheetにおけるプルダウンメニューの作り方です。
作り方は2パターン
1つはエクセルやスプレッドシート等でも見られるプルダウンメニュー。
もう1つはやはりappsheetもデータベースということで、
リレーションを組む方法です。
1.一般的なプルダウンメニュー
これは簡単です。
【Data】 ⇒ 【対象のカラムの鉛筆マーク】
ここで【Type】を【Enum】に変更し、【Type Details】の【Values】に
自由にメニューを登録します。
2.リレーションを組む場合
概要としてはシートを2つ作成し、1方のシートがプルダウンメニューのようなもの
となります。
上記と同じメニューをリレーションを組む場合は以下のようになります。
上記のようなシート構成を作り、appsheetの画面でリレーションの設定をします。
設定したカラムの鉛筆マークをクリックし、
【Type】を【Ref】に変更し、【Type Details】の【Source table】にメニューに
該当するシート(今回だと食材のシートを選択します。
この2つで何が違うのか、というところはまた次回の記事でご紹介します。
目的によって選ぶことにはなりますが、やはりリレーションの構成を
上手く組めるとより見やすく、使い易いアプリが作成できるので試してみてください!
連動型のプルダウンメニュー
ある項目に連動してプルダウンメニューを限定したい!
そんな時の設定方法です。
設定項目は。。。
【Data】 ⇒ 【対象のカラム】 ⇒ 【Data Validity】 ⇒ 【Valid if】
ここに条件を入力しましょう。
条件設定に使用する関数は以下の2つです。
〇 IN()
〇 SELECT()
実際に項目Aと項目Bの2つの項目があり、項目Aに連動して項目Bのプルダウンメニューが表示される場合は以下のようになります。
IN(
[_THIS],
SELECT(
項目B[ID項目B],
[ID項目A] = [_THISROW].[ID項目A],
TRUE
)
)
具体的な事例として家計簿アプリを作る場合、
収入と支出の項目があり(上記項目Aに相当)、
収入と支出それぞれに項目があると思います。(上記項目Bに相当)
画像のようなデータを組んだ場合は以下のようになります。
IN(
[_THIS],
SELECT(
小分類[ID分類],
[ID区分] = [_THISROW].[ID区分],
TRUE
)
)
もちろん、columnの設定でtypeはrefに設定してくださいね。
ぜひ、試してみてください!