0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

タイムズカー予約のヒヤヒヤ解放: ブックマークレットでの半自動化

Posted at

背景

カーシェアリングのタイムズカーを月になんどか使います。予約のときに日時をプルダウンで選択するのですが、うっかりなわたしは、いつか間違えそうで、いつもヒヤヒヤしています。

SS 2023-10-04 11.27.59.png

おそらく、カレンダーを見て予約の時間を考えながら、6つの要素を間違えない、というのがストレスなのだと思います。

頻繁に行う操作なので、ブックマークレットにしました。

ブックマークレット作成

  • ブラウザのブックマークバーにブックマークをつくります。名前はなんでもいいですが、timesBookFillとしました。
  • ブックマークのURL欄に、下記のJavaScriptを貼ります。

ブックマークレットの実行

  • 予約サイトを開き、ブックマークバーのブックマークをクリックします。
  • 開始日と終了日を入力するプロンプトが出ます。
  • YYYY-MM-DD hh:mm / YYYY-MM-DD hh:mm形式で入力します。
  • プルダウンが選択されます。

SS 2023-10-04 11.35.52.png

実際の運用

エディタ(Obsidian)のデイリーノートに予約日時をメモし、プロンプトにコピーします。作業がそのまま記録になるので、万が一ミスったときも、どこで間違えたかトラッキングできます。

SS 2023-10-04 11.45.19.png

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?