評価の高い(評判の良い)天気予報として挙げられるひとつはYahoo!天気だと思います.
サイトで見たりアプリで見たり通知を利用すればいいですがショートカットを使って欲しい部分だけ取り出して使ってみます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS15.2
スポンサーリンク
ダウンロードと使い方
ダウンロードしたらレシピを開いて先頭にある「URL」アクションの中身を書き換える必要があります.
対象のURLは各地域(画像は愛知県一宮市)のページURLにします.
郵便番号検索した結果を使うと確実です.
今回はhtmlのtableタグを画像化したものを使っているため上画像のように表示されます.
レシピの中身
今回も対象のWebページ本文を「Webの内容を取得」アクションで引っ張ってきてこれを加工します.
本文がきれいに整っているならいいのですが実際はそうでもありません.
画像左のように空行が挟まっている場合もあれば2つの指標が交互に並んでいる場合があります.
これらは各々で処理するしかありません.
今回は空行を「改行2つ」とみなしてこれを取り除き、後者は繰り返し処理で1つおきに拾うことにします.
まず「URL」と「URLの内容を取得」で対象の天気予報のページ内容を取得します.
前述の方針に従い、「テキストを置き換え」で結果から改行2つを空に置き換えます(正規表現ON).
今日の分と明日の分を分け、かつ日付を拾うためにまず「今日の天気- 」で分割し、その最後の項目に対して「明日の天気- 」で分割しておきます.
これで後者の分割の1つ目に今日の天気の内容が、2つ目に明日の天気の内容が含まれています.
画像は2重改行を取り除いた時点のもの
ただし2重改行を取り除いたことで天気の項目のみ一行に収まってしまいました.
今回はたまたま半角スペースが入り込んでいるため、これで分割すれば他と同じようにできるため問題はありません.
また例えば今の季節ならデフォルトの状態から降雪情報が追加されるため単純にURLの内容を取得した時点では必要な情報の行数目が変動してしまいます.
しかし天気予報の表手前で分割することで基本的にそれは回避されます.
逆に言えばそこに問題があると正しく値を拾えなくなります.
「URLの内容を取得」から一部を取り出す上でもっとも注意しなければならないことです.
というわけで上で分割したうちの1つ目、今日の天気から必要な行数を取り出して各データとして取得します.
(結果的に)1行目なら日付、3~10行目なら時刻、11行目は前述の通り半角スペースで区切られた天気…となっています.
風向と風速については前述の通り交互になっているため、「繰り返す」アクションで1つおきに変数に追加します.
初期値1のパラメータ変数を使い、用意した変数に追加するごとにパラメータに1足していくことで1つおきに追加できます.
これで最低限の処理は完了です.
あとはシンプルに1つ目から並べて表示させるなり一部だけ使うのもありです.
今回はこのデータとhtmlを使ってシンプルな図表にして表示させることにします.
各データは配列になっているため、「テキストを結合」アクションで区切り部分を</td><td>ないし</th><th>で結合することで
A</td><td>B</td><td>C</td><td>C…
とします.
このままだと先頭と末尾のタグが足りないのでこれは次で補います.
日付は今回は目立たせるためにhタグで囲い、上で足りないtableタグ関連を追加した状態でhtml(の一部)を組みます.
ここでは日付を表示するためのhタグと実際の図表であるtableのみです.
明日の天気についても同じように作ります.
上で作ったものを「テキスト」アクションで更に補ってhtml全体を構成します.
フォントサイズは23pxにしてありますが(画像矢印)必要に応じて変更してください.
大きすぎると下でPDFにするとき1ページに収まりません.
上の結果を使って「HTMLからリッチテキスト」を適用し、その結果を「PDFを作成」で一度PDFにします(オプションの「ページ番号」は1に).
その結果を「入力からイメージを取得」で画像化し、表示すれば完了です.
〆
未だガラケーの父親に帰宅前後の時間帯の天気をメールするために作ったのがきっかけです.
これまでは出かける前にPDFにしたのをUSBメモリに入れて仕事場で見てたんですよね.
相手がガラケーなので実際に送るのはテキストベースでオートメーションを使います.
たまにオートメーション自体がミスするためきちんと実行されたことを確認するため最後に通知アクションを加えています.
そんなガラケーも幕を下ろそうとしていますね.
レシピ自体は1ヶ月以上前に完成していたんですが、デバッグに時間を割いていました.
案の定数日前に結果がおかしくなったので修正した上で初配布できました.