【GASでIoT】「お天気インジゲータ」の作成(その2)天気情報のGoogleスプレッドシートへの取り込み設定
WEB上の天気予報情報をベースに、シンプルに傘が必要かをLEDで表示する「お天気インジゲータ」の解説&作成方法をご説明します。まずはサーバー側である、GoogleスプレッドシートとGAS(Google Apps Script)の準備手順からご説明します。
今回の記事は、その内のGoogleスプレッドシートの準備の説明です。
WEB上の天気予報情報をGoogleスプレッドシートのImportHTML()関数によって取り込む
Googleスプレッドシートには、エクセルには無い、さまざまなWEB情報の取り込み関数があり、今回、天気情報の取り込みにこの関数の1つを利用する事にしました。
利用する関数は ImportHTML()という関数で、URLを指定すると、そのURLで読み込めるHTMLページにある様々な情報をスプレッドシートに転記します。
使い方は以下です。
=ImportHTML(①URL、②要素の指定、③何番目か指定)
①URLを指定。直接記入する場合は引用符(”)で囲みます。
②tableか、listを指定。記入する場合は引用符(”)で囲みます。前者ならテーブル要素、後者ならリスト要素を取り込みます。
③対象のHTMLページの何番目のテーブル要素/リスト要素かを数字で指定します。
天気情報は、WEBページ上で概ねテーブル要素内で書かれているため、③はtableを選ぶと良いと思います。
Googleスプレッドシートのセルにこの関数を入力すると、そのセルを起点にして、下側/右側に向かって、URLで参照したテーブルやリスト内の情報が展開されます。
参照元のWEBページが変わっても自動更新されるため、一度設定しておくと常に最新の情報が得られる一方、得たい情報が記載されたセルが勝手に変わってしまうリスクがあります。
参照したいWEBページを探しだし、この関数を使ってGoogleスプレッドシート上にページの情報を展開し、必要な天気情報がどこかのセルに文字として表記される様にします。
スプレッドシート上に展開された情報のどこに必要な情報が記載されるかは、トライ&エラーで試してみるしかありません。場合によっては曜日や予報情報によってセルの位置がずれる事もあるので、注意が必要です。
(注意)ImportHTML()関数による情報利用には注意が必要~
個人利用に限定して自己責任でお願いします~
ここで少し、ImportHTML()関数 についての注意点を申し上げます。
この関数が行う、WEBページからので情報抽出は、一般にスクレイピングと呼ばれます。
スクレイピング行為そのものは、あまり大手を振って行うものではありません。参照するWEBページは、特に明記していない限り、本来はブラウザから読者に見てもらうために作られています。ページの作成者は、そうした行為を通じて何等かのメリット(広告表示させたり)を得ている場合もあるからです。
スクレイピングを明確に禁止しているページは、参照しない様にしましょう。また、あくまで個人利用に徹して、商用利用などは慎む様にお願いします。
取り込み用のスプレッドシートの例をご紹介
それでは、天気情報の取り込み用のスプレッドシートをご紹介します。特に難しい事はしていませんので、ここでの紹介はあくまで例示だとお考えください。
以下のエクセルのシートをダウンロードして、Googleスプレッドシートにインポートしてください。
取り込みは、Googleスプレッドシートを開いて、〔ファイル〕メニューから〔インポート〕を選ぶとできます。
スプレッドシートに取り込んだら、まず、見出しが「天気情報」となっているか確認してください。
そして、参考にしたい情報が掲載されているWEBページを探し、A2セル(一番上にある黄色いセル)にページのURLを入力します。
次に、30行目付近に白い文字で入っている「=IMPORTtHTML()」関数の、頭にある「 ’ (シングル引用符)」を削除して、通常の関数として入力された状態にしてください。
インターネットにアクセスできる状態であれば、水色になったエリアに取り込み先のWEBページの情報がスクレイピングされるはずです。
得たい情報がどこかに入っていたでしょうか? 得たい情報が入ったセルを1つ決めたら(ここではB32セルとしました)、5行目付近にある、黄色いセル部に参照したいセルの行と列を入力してください。
すると、上の画像の右側にある様に、採用する情報が表示されます。(上の例では「晴」という文字です)
最後に確認です。8行目付近には、採用情報に含まれる文字と数値の対応を記入しています。
「雨」が含まれていれば「100」を「指数」欄に表示
「雪」が含まれていれば「100」を「指数」欄に表示
「曇」が含まれていれば「0」を「指数」欄に表示
「判定(MAX)」欄には、「指数」の最大値を表示
この対応は、黄色い部分を編集する事で各自アレンジ可能です。
今回は、傘が必要な場合(雨か雪)は判定蘭に「100」が、必要性が半々の場合(曇)は「10」が、それ以外なら「0」が出る様に設定しています。
さて、こうしてスプレッドシートにお天気の判定値を表す事ができました。次の記事では、外部からアクセスして、この判定値を得るために、GAS(
Google Apps Script)を用意します。
この記事が気に入ったらサポートをしてみませんか?