なぜか無い、シンプルに「最後に実施した日からの経過日数をカウントし、ワンタッチで今日に更新するツール
あったとしてもiCloud同期に対応してなかったりする。なんで??
成果物
スプシのスクショ
スプシ添付のGAS
// チェックボックスをオン・オフ切り替えたとき、そのチェックボックスの座標を起点として
// 隣のセルを更新する
function onEdit(e){
if(e.value === 'TRUE' || e.value == 'FALSE' ){
const todayYMD = Utilities.formatDate((new Date()), 'JST', 'yyyy-MM-dd');
e.range.offset(0,-2).setValue(todayYMD);
}
}
解説
- onEdit(e) は、スプシ組込みのイベント処理関数で、あらゆるセル更新イベント(例外あり)を基本、受け取る
- セルの値がTRUEまたはFALSEになるのは、チェックボックスだけなので、イベントを発生させたのは、チェックボックスに限定できる
- チェックボックスはセルに配置できるので、そのセル座標から相対参照で、「その行」に対する処理を書くことができる
- JavascriptのDateオブジェクトは、ExcelVBAと比べて貧弱なので、
Utilities.formatDateを使って楽をする
できること
- Mac(Windows/Linux PC)、iPad、iPhone間のリアルタイム同期
- 当然だよなあ?
- ワンタッチで、指定したレコードの日付だけを「今日」にできる。つまり、経過日数を0にできる。
- 当然だよなあ?
- 項目の追加・削除が自由にできる
- 数式を自分の好みにカスタマイズできる
- スプシなので可能
できないこと
- かっこいいリセットボタンをつける
- なぜかiOSのスプシアプリは「ボタンを押してGAS実行」を禁じられているため、仕方なくチェックボックスで代用している。代用できたからよかったものの…Google Formsといい、Appleデバイスは理不尽な制約を受けることが多い。Appleが悪いのか、Googleが悪いのか…
- iOSデバイスで、カレンダーコントロールを使って日付を選ぶ
- Google Formsもそうなんだけど、なんでこういうイケズをするの?Googleくん。こればっかりは、Appleによるセキュリティ上の制約じゃなくて、「Androidを使ってくれよ」という嫌がらせでしょ?
だいたいのアプリのアイデアはスプシで賄えてしまう
スプシが有能すぎて、flutterだとかの開発環境を構築する気が失せる。
開発環境のトラブルシュートしてる間に、スプシなら構想も実装も全部終わって、デプロイまでできる。なんならこのQiita記事だって書けるだろう。
スプシの生産性が高過ぎるのか、 モバイルアプリの開発環境がクソなのか 、両方なのか…。
またしてもApp Storeでアプリ配布して大富豪になる機会を逃したのだった。
