Docly Child

鉄道運行情報の通知

1374 views

この記事では、特定のサイトが更新されていた場合に通知を送る方法を説明します。

【できるようになること】

  • Webサイトから情報を取得
  • Webサイトの情報をSlackに通知
  • 条件分岐の設定

 ワークフローの設定例

今回は、以下のケースを想定したワークフローを作成してみます。

交通系サイトで、ある鉄道路線の運行状況を確認し、平常運転ではなかったら、Slackに通知を送る。

まずは、ブラウザを開くアクションを利用して、Yahooの運行状況を開きます。

  • OpenBrowser(ブラウザを開く)を設置します。
  • 以下URLを入力します。
    https://transit.yahoo.co.jp/traininfo/top
  • 運行情報の文字入力欄からCSSセレクタを取得します。
    ※クリップボードにコピーされます。
  • TypeText(文字入力)アクションを設置します。
  • TypeTextのCSSセレクタに、先に取得したCSSセレクタをペーストします。
  • 文字列に、適当な鉄道路線名を入力します

 

  • 路線の時と同様、検索ボタンのCSSセレクタを取得します。
  • Clickアクションを設置します。
  • ClickアクションのCSSセレクタに、先に取得したCSSセレクタをペーストします。
  • 検索ボタンを押した後に出てくる路線一覧のページで、該当路線のセレクタを取得します。
  • Clickアクションをもう1つ設置します。
  • ClickアクションのCSSセレクタに、先に取得したCSSセレクタをペーストします。
 

 

 

次に、運行状況(テキスト)を取得します。
取得した運行状況は、運行情報メッセージを送信するか否か判断する際の条件分岐で使用します。

  • 運行情報が書かれている位置のCSSセレクタを取得します(下記画像参照)
  • GetText(テキストを取得)を設置します。
  • GetTextのCSSセレクタに、先に取得したCSSセレクタをペーストします。
 

今回の例は、「検索した鉄道路線の運行情報が平常運転でない場合、Slackに通知する」となっています。
5.で取得した鉄道運行情報をもとに、「検索した鉄道路線の運行情報が平常運転かどうか」を判断する条件分岐を作成してみましょう。

  • Compare(比較する)アクションを設置します。
  • 比較基準に、GetTextのアウトプットを設定します。
  • 比較対象に、以下を入力します。
    [○]平常運転
  • 比較方法に、「を含む」を指定します。
  • ではない。(not) をTRUEにします。
  • IF(条件分岐)を設置し、Compareのアウトプットを指定します。

 

[参考記事]

条件式の作成ができたため、最後にSlackにメッセージを送信するアクションを追加します。
※Slackとの連携方法は、こちらをご参照ください。

  • SendSlackMessage(Slackにメッセージを送信)を設置します。
  • 任意のプロバイダID,チャンネル,本文を設定します。
  • ワークフローを保存/実行します。

 

[参考記事]

6. の条件分岐は、Compareアクションを使用しない形でも作成可能です。
この場合は、以下のような形で作成できます。

  • GetTextの下に、StoreValue(変数に保存)を設置します。
  • 任意の変数名を指定します。
  • 値にGetTextのアウトプットを指定します。
  • IF(条件分岐)を設置し、以下いずれかの条件文を直接入力します。
    ${!変数名.includes("[○]平常運転")}
    ${変数名 != "[○]平常運転" && 変数名 != "\n[○]平常運転"}

 

[参考記事]

このワークフローは、鉄道の運行情報を提供しているWebサイトの更新をトリガーとして自動実行されるものではありません。
ただ、スケジュール(定期実行)登録により、任意の時間帯に実行させることは可能です。


例えば、1時間おきや10分おき、金曜日の17時のみなど、特定のタイミングでこのワークフローを実行させることができます。

詳細な方法については、以下記事をご参照ください。

 

# ブラウザを開く
+open_browser_1:
  action>: OpenBrowser
  url: 'https://transit.yahoo.co.jp/traininfo/top'
  lang: 'ja-JP'
  headless: true
  useShadowDomSelector: false
  private: false

# 文字入力_鉄道路線名で検索
+type_text_1:
  action>: TypeText
  browser: +open_browser_1
  selector: 'input#query_input'
  text: '都営浅草線'
  clearValue: false
  ignoreError: true
  private: false

# クリック_検索
+click_1:
  action>: Click
  browser: +type_text_1
  selector: '.btnSearch > input'
  confirm: true
  ignoreError: true
  timeout: 30000
  private: false

# クリック_検索結果の1番目
+click_2:
  action>: Click
  browser: +click_1
  selector: '.elmSearchItem > li > a'
  confirm: true
  ignoreError: true
  timeout: 30000
  private: false

# テキストを取得_運行状況
+get_text_1:
  action>: GetText
  browser: +click_2
  selector: '#mdServiceStatus > dl > dt'
  ignoreError: true
  private: false

# 比較する
+compare_1:
  action>: Compare
  subject: +get_text_1
  compare_with: '[○]平常運転'
  method: CONTAINS
  not: true
  private: false

# 真のとき
+if_1:
  if>: +compare_1
  _do:

    # Slackでメッセージを送信する
    +send_slack_message_1:
      action>: SendSlackMessage
      provider: ''
      channel: ''
      text: '浅草線は平常運転ではないようです。ご注意ください。'
      send_select: false
      response_message: false
      private: false
      meta:
        display:
<Notification>通知

このページは役に立ちましたか?