カレンダーの時間範囲(Datetime型)
当日特化型の予定表を作成してみました。日を跨ぐデータは入力不可にしてあります。
Datetime型の入力フォーム。スマホと開発画面。
データシートはこんな感じ。
日付はDateTime型を指定。開始日か終了日どちらかのカラムを編集します。
Data Validity部分に入力条件を入れました。同じ日付しか許可しません。
■ 日付と時間の範囲を期待通りに表示したい
Date型の日付範囲表示について終了日付に+1すると期待通りに表示される、ということをしていたのですが、Datetime型でそのまま実装すると正しく動かなかったので新しい対策を考えました。バーチャルカラムを作成して以下の数式を入力、終了日と終了時間に指定!
=if(time([終了日])="000:00:00",[終了日]+"023:59:59",[終了日])
よくよく考えると終了日の時間が0:00:00の時だけに問題がある模様!その時だけ対策をすればよい!終了日のデフォルト時間を"023:59:59"にしてしまうのもアリかも!
(期待通り期待通りと書いていますが私の偏見です。)
以上。
カレンダーの日付範囲(Date型)
■ 現象の確認
カレンダーの日付範囲について気になる点を現象の確認から。データシートはこんな感じのものを用意。日付は全てDate型。
何も考えず作成すると出来上がるのがコレ。全部、日付範囲が1日足らんです・・・
カレンダービューは秒刻みのタイムスケジュールも組めるので、内部的にDate型をDatetime型に変換してるのではないか?そうすると9/12~9/14は9/12 0:00:00~9/14 0:00:00になり、図に書いてみると確かにこの通りになる。だけど当日範囲だけは正しく表示されてる・・・ちょい矛盾。
■ 対策
これはDate型だけを使っている場合の対策です。見た目が1日足りなければ1日足してやればよい。バーチャルカラム作成、内容は終了日+1だけ。この部分は編集時に表示しても意味が無いのでShowはOFF。
終了範囲を上記で作成したバーチャルカラムに置き換える。作業は以上。
当日の範囲も(何故か)大丈夫そう。とりあえず矛盾なし。
※ 9/12~9/14をDatetime型で試してみたところ、終了日の指定を9/14 0:00:00にすると9/13までの範囲になり、9/14 0:00:01にすると9/14までの範囲になりました。ちょっとでも次の日に食い込んでいればよい模様。
■ 補足
DayとWeekを表示した時のこの部分。Date型が指定されれば使われず、Datetime型が指定されれば使われる模様。Datetime型でも日を跨いでいるデータの場合は使われない模様。当日の時間範囲指定の場合だけ使われる模様。
以上。
カレンダービューと色
せっかくなのでカレンダーに手を出してみた。何も考えてなかったのでDatetime型ではなくDate型で作ってしまいました。開発環境のカレンダービューだと見づらかったのでスマホ画面を使ってます。
各カラー帯を選択するとDetail画面に遷移する。ビュー名の整合性が取れていませんが気にしない。細かいインタフェースは実行環境によって異なる模様。
月表示だと表示数限界時に「+2 more」とか省略される模様。分からんけど環境の縦サイズによる?タブレットとかではたくさん見れるのでは?週表示では全部見れた。
いちおう私の開発環境のビューも載せておきます。見づらいというかアレですね。
注意点
Datetime型を使っていればこういうことは起きないと思いますが、テストデータではDate型で9/16~9/18を指定して、2021/09/16 0:00:00~2021/09/18 0:00:00に変換されてます。カラー帯が18日まで伸びていません。しかしこれは矛盾ではないし当然の結果です。よく考えて実装していきましょう。
■ やったこと
スプレッドシートにカラム「カラー」を右端に追加。エラーが出まくるのでAppSheet側でテーブル再構成を実行。データ側でシステム対応外のカラーを指定するとホワイト?何も指定しないとデフォルト(ブルー?)になる模様。あと開始日<終了日である必要がある模様。カレンダーに表示されませんでした。
ビューを作成。
ちょいスクロールしてView Optionsの各設定項目にカラムを設定。作業終了。
カスタマイズはカラーくらいですが、デフォルトで問題ないです。
表示するカラーの順番変えられます。各列左端のクリリンを上下にドラッグしましょう。
この部分は謎です。
■ カレンダーカテゴリに使える色(2021年9月12日)
カレンダーのカテゴリに使える色は、デフォルトで出てくるGreen、Yellow、Orange、Red、Purple、Blue、White、Blackだけだと思います。「Add」とか出てたので「Gray」とか軽い気持ちで指定してみたらエラーになりましたゴメンナサイもうしません。
UX>Brandで用意されているこの色もカレンダーカテゴリには使えない模様。
Primary colorの+Custom、Moreに左上からRed、Orange、Light green、Forest green、Teal、Medium blue、Navy blue、Purple、Magenta、Almondがあったので全部試してみましたが、デフォルトの8個とかぶっている3個以外は全滅でした。でもカレンダーカテゴリは8種類もあれば十分です。
以上。
日付のMM/DD表示2
見た目スッキリ!「2021/」の5文字を2列分省略できたのは大きいです。左がスッキリ、右は何もしてないヤツです。
両方とも参照テーブルが同じです。
バーチャルカラムを使った表示特化版。=text([開始日],"mm/dd")でも構いません。「9/10」「09/10」のデータ型はTextです。Date型にしてみると空表示になります。
編集用の構成。ほとんどデフォルトです。
更にスライスにするとカラムの並び替えができるので、それをビューにすると見せ方が広がりますね!やはり編集をするならちゃんとしたユニークキーが必要かと。スプレッドシートの左端にユニークキーカラムを追加してテーブルの再構成を行い、INITIAL VALUEに=UNIQUEID()を入れて、、、、やり始めたらキリがないので終了。
以上。
Detail画面を表示させない
Appsheetで色々試していると、Action実行時にデータの変更がない場合に更新処理をやってないように見えたので試してみました。
Behavior>ActionsでNew Action+を選択。開始日に開始日を入れるだけのActionを作成。
該当ViewのBehaviorで、行選択時のActionを**auto**から作成したActionに変更。Detail画面に遷移する処理が、Action実行に置き換わります。
図の緑で囲ってあるあたりを連打。開始日に開始日を入れる不毛な処理が連打分行われるはずですが、データ更新が行われているようには見えません...Appsheet側ではじいているのでしょうか?分かりませんが。
ということでタイトル回収です。Detail画面が表示されないようになりました。草。
以上。
一部の行を編集不可にする
編集不可の行って必要だと思うんです。やってみたら出来たので記録。
あくまで一例です。スプレッドシートでこんな感じに編集可否のカラムを追加。
追加した列がAppsheet側で認識されていません。Regenerate Strucatrureを押すとテーブルが再認識されます。確認が出ます。Sure?
認識されました!列を入れ替えた時も同様の対応です。
この後、画面上で表示する必要は特にないので設定ShowをOFFにしました。
Behavior>Actions>Show system actionsを選択。
似たような項目がたくさんあります。一覧のEdit>Behavior>Only if condition is trueに数式を入れます。ここが実行可否を決める部分だと思います。
=if([edit],true,false)
Editアイコンが消えました!編集できません!
加算アクションも消しましょう。数式は同じもので構いません。
消えました。
アクションの一括実行時、変更不可の行を混ぜるとメニューが表示されません。
以上。