22 ファインダー(天気3)

(前回からのつづき)

【お題】

気象庁のホームページから、設定ファイルに入力されている地点の、過去5年間の現在日付と同じ月日の天気情報を取得してExcelファイルに出力する。


《出力する項目》

年、地点名1、地点名2、降水量(mm)、最高気温(℃)、最低気温(℃)、平均風速(m/s)、日照時間(h)


《出力ファイル》

過去の天気_yyyyMMdd.xlsx  ※日付は現在日付


ようやく最終回の今回は、表示されているレイアウトを判別してデータを抽出し、Excelファイルに出力するという処理を作成していきます。

前回も触れましたが、過去の天気情報を抽出する[日ごとの値]ページには、レイアウトが2種類あります。レイアウトは地点によって異なり、下図左(気圧あり)と右(気圧なし)のパターンがあります。そして、それぞれ項目の場所が異なるため、どちらのレイアウトなのかを判別して正しい場所の値を抽出する必要があります。


レイアウトの判別は、[日]の次のタイトルが[気圧(hPa)]か[降水量(mm)]かで行うことにします。


【1】設定ファイルを置き換える

2種類のレイアウトが表示されるように、「weatherpoint2.csv」の地点を次の内容に変更して置き換えてください。

 ※ファイルを置き換えたら、Design Studioの左上にある[更新]ボタンをクリックしてください。

地点名1,地点名2
神奈川県,横浜
愛媛県,大三島

【2】レイアウトを判別する

(1)レイアウトの判別を行うステップは天気情報の取得前に行いますので、まず[天気情報の取得]ステップをクリックします。

次に、タイトル行の[気圧(hPa)]を右クリック→[抽出]→[テキスト]→[新しいシンプル タイプの変数]→[Short Text (シンプル)]をクリックしてください。

そして、新しい変数の[名前]は「項目名」にしておきます。


(2)ここで、追加されたステップ[Extract 項目名]の[ファインダー]を確認すると、「colspan=”2″」になっています。

 ※タグ属性「colspan」は、水平方向のセルの結合数を指定します。


(3)しかし、タイトル[降水量(mm)]は水平方向にセルを3つ結合しているので「colspan=”3″」となり、[Extract 項目名]ステップの抽出対象になりません。


(4)そこで、[ファインダー]を「scope=”colgroup”」に変更します。)

 ※属性「scope」は見出しの対象範囲を指定でき、属性値「colgroup」はそのセルが列グループに対する見出しであることを示します。


(5)次に、タイトルが[気圧(hPa)]かそうでないかを判別して処理を分けるために、トライステップを追加します。


(6)そして、トライステップのすぐ後ろに[変数判定]ステップを追加して、変数[項目名]が「気圧」という文字列を含む場合は処理を続行、そうでない場合は[別の代替手段を試行]とします。



【3】天気情報を抽出する

(1)ここからは、別のレイアウトで表示されている天気情報を抽出していきます。

イテレーションを「2」にして、下の方のエンドポイントをクリックしてください。


(2)あ、すみません。下図の[Set Name Tag 日]ステップを移動させてください。。




(3)(何事もなかったかのように)では、天気情報を抽出していきます。

トライステップの下の矢印のエンドポイントをクリックしてから、抽出ステップを追加していきます。




(4)すべての項目が抽出できたら、ステップをグループ化して、矢印を[Assign 日付]ステップに連結しておきましょう。


【4】Excel出力のためのステップ

Excelファイルを出力するときに追加するステップは次の3つです。

  1. Excel型の変数に見出しを書き込む(初めに1回)
  2. Excel型の変数に明細を書き込む(明細の件数分)
  3. Excel型の変数をExcelファイルに出力する(最後に1回)

【5】Excelファイルを出力する

(1)まず、Excel型のグローバル変数を追加します。


(2)実行日時の取得後に、変数[過去の天気Excel]を開いて見出しを書き込んでいきます。




(3)すべての見出しを書き込んだら、処理をグループ化しておきましょう。そして、ステップ名をわかりやすい名前に変更してください。ここでは、[Excel見出し]にしています。


(4)次に、[天気情報の取得]ステップの後に明細を書き込んでいくのですが、まずは変数[過去の天気Excel]のワークシートを[既定のウィンドウとして設定]して、書き込みできる状態にします。



(5)そして、ワークシートに行を挿入するステップを追加します。


(6)追加した行に[過去天気情報]をセットします。ここで出力する日付は「年」だけで良いので、[日付フォーマット]は「yyyy年」にします。



(7)明細書き込み処理もグループ化しておきましょう。下図では、ステップ名を[Excel明細]にしています。


(8)最後に、Excelファイルを出力するために、設定ファイル繰り返しの[For Each Data Row]ステップの前にブランチを追加します。

このブランチのステップは、処理の最後に1度だけ実行されます。


(9)そして、ファイル出力ステップを追加します。

[ファイル名]は、[コンバータ]で実行日時の書式を「yyyyMMdd」に変換し、テキストを前後に追加してファイルパスを作成します。


《ファイル名の例》

C:\User\xxx\Desctop\過去の天気_yyyyMMdd.xlsx

[ファイルコンテンツ]は[過去の天気Excel]を選択して、[ファイルエンコーディング]は[Windows 日本語 (windows-3 1j)]を選択します。



【6】ロボットを実行する

(1)デバッグモードでロボットを実行して、処理が終了したら次のことを確認してください。

  • ステータス・ビューに過去の天気情報が正しく表示されている。
  • 過去の天気.xlsxが正常に出力されている。


最後に、全体のフロー図を添付しておきます。内容が盛りだくさんだったわりには、これだけ?という感じのステップですね。。