背景
カーシェアリングのタイムズカーを月になんどか使います。予約のときに日時をプルダウンで選択するのですが、うっかりなわたしは、いつか間違えそうで、いつもヒヤヒヤしています。
おそらく、カレンダーを見て予約の時間を考えながら、6つの要素を間違えない、というのがストレスなのだと思います。
頻繁に行う操作なので、ブックマークレットにしました。
ブックマークレット作成
- ブラウザのブックマークバーにブックマークをつくります。名前はなんでもいいですが、
timesBookFill
としました。 - ブックマークのURL欄に、下記のJavaScriptを貼ります。
ブックマークレットの実行
- 予約サイトを開き、ブックマークバーのブックマークをクリックします。
- 開始日と終了日を入力するプロンプトが出ます。
-
YYYY-MM-DD hh:mm / YYYY-MM-DD hh:mm
形式で入力します。 - プルダウンが選択されます。
実際の運用
エディタ(Obsidian)のデイリーノートに予約日時をメモし、プロンプトにコピーします。作業がそのまま記録になるので、万が一ミスったときも、どこで間違えたかトラッキングできます。
JavaScript
javascript:(function(){
document.getElementById('dateStartSearch').value = '';
document.getElementById('hourStartSearch').value = '';
document.getElementById('minuteStartSearch').value = '';
document.getElementById('dateEndSearch').value = '';
document.getElementById('hourEndSearch').value = '';
document.getElementById('minuteEndSearch').value = '';
var i = prompt('日時を以下のフォーマットで入力:\n"YYYY-MM-DD hh:mm / YYYY-MM-DD hh:mm"', '').split(' / '), sP = i[0].split(' '), eP = i[1].split(' '), sD = sP[0], sT = sP[1].split(':'), eD = eP[0], eT = eP[1].split(':');
if(sD !== eD && !confirm('開始日と終了日が異なります。これは正しいですか?')) return;
if(![0,23].some(v => parseInt(sT[0]) >= v) || !["00","15","30","45"].includes(sT[1]) || ![0,23].some(v => parseInt(eT[0]) >= v) || !["00","15","30","45"].includes(eT[1])) {
alert("時刻のフォーマットが正しくありません。");
return;
}
document.getElementById('dateStartSearch').value = sD + ' 00:00:00.0';
document.getElementById('hourStartSearch').value = (+sT[0]).toString();
document.getElementById('minuteStartSearch').value = sT[1];
document.getElementById('dateEndSearch').value = eD + ' 00:00:00.0';
document.getElementById('hourEndSearch').value = (+eT[0]).toString();
document.getElementById('minuteEndSearch').value = eT[1];
})();
予約をミスらないための工夫点
- 予約開始日時と終了日時が異なる場合、アラートを出す(処理は進められる)
- 時刻(hh)を1桁にする
- 時刻(mm)の形式をチェックする(値は00, 15, 30, 45のみ)
- スクリプトがうまく動かないときの予防で
-- 選択 --
を選んでおく
おわりに
定期的に予約作業があり、毎回ヒヤヒヤしていました。これでかなりストレスが減らせるのではないかとおもいます。
環境
- Vivaldi: 6.2.3105.56 (Stable channel) (arm64)
- OS: macOS バージョン14.0(ビルド23A344)
- JavaScript: V8 11.6.189.22