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?

iOSのオートメーションを使ってネットスーパーの配達日時を自動でカレンダーに登録する

Posted at

iOSのオートメーションを使ってイトーヨーカドーのネットスーパーの配達予定日時を自動でカレンダーに登録するようにしてみたのでやり方をメモ。

前提整理

まず、イトーヨーカドーのネットスーパーでの買物の手順を整理しておく(厳密にすると登場人物はもっと細かく分類できそうだが、簡単のためにここでは「ユーザー」と「ネットスーパー」という単純化した整理にしておく)。

  1. ユーザーがネットスーパーで買物をする。このときに受取時間帯(2時間幅)を合わせて指定する。
  2. ネットスーパーからユーザーに「注文完了のお知らせ」メールが届く。このとき、配達予定日時はまだ確定していない。
  3. 受取時間帯の数時間前になると、ネットスーパーからユーザーに「配達予定日時のお知らせ」メールが届く。このメールには最新のお届け予定日時(30分程度の幅)が確認できるURLが記載されており、ユーザーはこのURLにアクセスすることで配達予定日時の更新を知ることができる。配達予定日時は時々刻々更新される。
  4. 受取時間帯が近付き配達が開始されると、ネットスーパーからユーザーに「配達開始のお知らせ」メールが届く。このメールも「配達予定日時のお知らせ」とほぼ同じ内容で、最新のお届け予定日時が確認できるURLが記載されている。
  5. ユーザーは自宅でネットスーパーの商品を受け取る。
  6. ネットスーパーからユーザーに「配達完了のお知らせ」メールが届く。

図にするとこんな感じ。

上記手順の3, 4でメールを見逃したり、ついうっかり5の受取時間に外出してしまうといったことを防ぐために、配達予定日時を自動でカレンダーに登録し、通知が来るようにしておきたい。

やったこと

iOSのショートカットアプリでオートメーションを作成する。以下iOS 17.4.1での場合。

  1. ショートカットアプリを開く
  2. オートメーションを選択する
  3. 右上の+からオートメーションを作成する。個人用オートメーション > メールを選択する。
  4. 差出人をお知らせメールの送信メールアドレスにする。
  5. 件名が次を含むにお知らせメールの件名をコピペする。今回は「配達予定日時のお知らせ」をトリガーにしたので、「配達予定日時のお知らせ」メールの件名をコピペする。
  6. すぐに実行を選択する。
  7. オートメーションの本体を記述する。

オートメーションの本体は下記の通り。

  1. メールを入力として受け取る
  2. 変数本文コンテンツに設定
  3. 本文https://www\.logistics\.iy-net\.jp/notice/[0-9a-f]+に一致
  4. 変数url一致に設定
  5. urlの内容を取得
  6. URLの内容お届け予定時間\s*:\s*[0-9/: ]+〜[0-9/: ]+に一致
  7. 変数お届け予定一致に設定
  8. お届け予定[0-9/: ]+〜に一致
  9. 一致から日付を取得
  10. 変数開始日付に設定
  11. お届け予定〜[0-9/: ]+に一致
  12. 一致から日付を取得
  13. 変数終了日付に設定
  14. 開始から終了までのネットスーパー受け取りという名前の予定を追加
  15. 新規予定URLurlに設定

こうしておくことで、「配達予定日時のお知らせ」メールを受信すると自動でオートメーションが実行され、カレンダーに配達予定日時が登録される。

メール本文もお届け予定日時のWebページも機械可読性は特に考えられていないので、とにかく正規表現でどうにかする。URLは末尾がIDのようなので先頭部分でひっかける。日時の取得は正規表現でおおざっぱにひっかけて、細部は「日付を取得」にお任せする。Webページに改行が含まれることがあるため、正規表現で半角空白ではなく\sを使わなければいけなかったりといったところはハマリどころだろうか。

改善できそうなところ

上記では「配達開始のお知らせ」ではなく「配達予定日時のお知らせ」をトリガーにしているため、カレンダーに作成される予定の日時は最終的な配達予定日時とはズレることがある。これは、できるだけ早くカレンダーに予定を作成し、配達予定に気づくチャンスを少しでも多くするためである。カレンダーの日時をより正確にするためには、「配達開始のお知らせ」をトリガーに配達予定日時を再度取得し更新するといったことも考えられるだろう。

とはいうものの、現在はそこまではせず、カレンダーのURL欄にお届け予定日時のWebページのURLを設定しておき(オートメーションの「新規予定URLurlに設定」の部分)、必要に応じて人手で簡単に予定を確認・更新できるようにするに止めている。

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?