一行日記のお天気データは、(子どもに内緒で)自動収集。2学期前に焦らない!

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

いよいよ始まった夏休み。今年も始まる一行日記。果たして今年は予定通りに進められるのか…?

夏休みが始まると、親として気がかりなのが「お昼ご飯」と「宿題」。

夏休みの宿題予定は、1学期終業式の日に(一応)計画を立てさせました…が、いまだかつて計画通りに進んだ試しがありません😭

だって私もできなかったし、今もできない😅

その中でも、とくに困るのが「夏休みの一行日記」。

子どもの宿題なので私は横から眺めるだけ…でいたいのですが、たいていは

  1. 夏休みの終わり、子どもが自分で頑張って書こうとするけど、書けない
  2. こちらがシビレを切らして、カレンダーから大きな出来事をピックアップしてヒントを出す
  3. なんとか日記を埋めていくも、お天気情報まで覚えているはずもなく、撃沈😰

ということになりがちです。

過去の天気 – goo天気 過去の天気 – 日本気象協会 tenki.jp といったサイトでは、住んでいる場所(広域)の過去の天気が調べられます😉

そこで夏休み終わりのイライラを減らすべく、毎日お昼ごろ自動でお天気情報を取得して、表に記録できる仕組みを考えてみました!

夏休みの終わりにその表を見れば、お天気情報が分かって(少しは)便利かも?!しれません。

アテにされても困るので、子どもにはナイショで進めます💦

この仕組みを使ってできること

img

この仕組みを使えば

  • 自分が住む場所決まった時間のお天気情報自動的に表にまとめられる
  • 夏休みの終わりに、まとめてお天気情報を確認することができる

仕組みを作るまでの、全体の流れ

  1. スプレッドシート(表計算アプリ)の準備
  2. お天気サイトのURLアドレス(自分の住んでいる場所のお天気情報が載っている)をスプレッドシートにコピペ
  3. GAS(Google App Script)の設定をする(ほぼコピペで大丈夫)
  4. お天気情報を取得する、時間の設定をする

必要な物・アプリ

  • パソコン
    表計算アプリなどを使いますので、入力しやすく画面が広いパソコンの方がオススメです。
  • Googleスプレッドシート
    Googleの表計算アプリです。Googleアカウントを持っていれば、誰でも無料で利用できます。
    お天気情報の取得や、データの記録に使います。
    Googleスプレッドシート
  • GoogleChromeブラウザ
    カスタマイズを考えている場合は、Chromeブラウザの方が使いやすいです。
    GoogleChromeブラウザ

注意事項とお願い

こちらの仕組みを作る際に、いくつか注意事項がありますのでご確認ください。

スクレイピングについて

この仕組みでは、お天気情報を取得するために(簡易的ではありますが)スクレイピングという技術を使っています。そのため、

  • 取得したデータは個人利用の範囲内にする
  • 相手のサイトに負荷をかけない
  • サイトによってはスクレイピング禁止のところもありますので、注意してください

…という点を踏まえ、自己責任にてご利用ください

スクレイピングに関する参考サイト:
【注意】スクレイピングはルール・マナーを守って! 違法となる可能性も

参考サイト

この仕組みはこちらのサイト を参考に、作成しました。
ありがとうございました!

作成手順

img

では早速、作成していきましょう。

スプレッドシートの準備

お天気情報を取得するための、スプレッドシートを準備します。
用意したファイルのコピーをしてもらう必要があるのですが、以下の注意点をご確認の上、ご利用願います。

注意とお願い

ご利用の皆様には「閲覧権限のみ」で、「アクセス権をお渡しすることはできません」ので必ず以下の方法にて、ご利用をお願いいたします🙇

  • このスプレッドシートを利用する場合は必ず「コピーを作成」して、ご自身のGoogleドライブ内にコピーファイルを作成してください
  • シートの関数をさわってしまうと、動作がおかしくなってしまいます。お取り扱いにご注意願います🙇

シートを開いて「ダウンロード」を選んでも、以降から使うスプレッドシートを使うことができません。

スプレッドシートファイルのコピーを作成

まずはこちら から、ファイルのコピーを作成します。

夏休みの一行日記

ファイルを開いたら

  1. 「ファイル」→「コピーを作成」
    コピーを作成をクリック
  2. ドキュメントをコピー →「名前」と「フォルダ」の設定をする
    ここでは「夏休みの一行日記」とします

    名前とフォルダ名を変更

すると、

  • 「一行日記」シート
  • 「お天気調べ」シート

が確認できます。

一行日記とお天気調べシート

「お天気調べ」シートで、お天気情報を取得して、「一行日記」シートに記録していく…という内容です。

住んでいる地域のURLアドレスを調べて、コピー&ペースト

今回は、日本気象協会 tenki.jp【公式】 から、お天気情報を取得します。

天気jpスクリーンショット

日本気象協会 tenki.jp【公式】

tenki.jp以外のサイトからお天気情報を取得する場合は、スプレッドシート関数のカスタマイズが必要 です

なぜ新宿?
オリンピックスタジアムの場所 を例にしてみました😉

tenki.jp のサイトに飛んだら、

  1. 住所の郵便番号を入力して検索
    郵便番号を入力して検索
  2. 検索結果から、住んでいる場所を絞り込んでいきます
    …すると、このような画面が出ますので、このURLアドレスをコピー

    アドレスを取得してコピー
  3. スプレッドシートの「お天気調べシート」 → 「C1」の場所にペースト
    アドレスをペーストする

すると、しばらくローディングした後に

  • 「(先ほど選んだ地名)の天気」
  • 日付・お天気情報

が表示されます。

これで、現在の天気情報を取得することができました😀

お天気情報の取得方法

img

多少技術的なことなので、読み飛ばしてもらっても構いません。
カスタマイズしたい場合などに、ご覧ください。

IMPORTXML関数

詳しくはこちらをご参考に IMPORTXML – ドキュメント エディタ ヘルプ

この関数を使って、簡易スクレイピングを行っています。

別の天気サイトを参照したい時などは、この関数の「XPath クエリ」を書き換えることで、カスタマイズができます。

XPathの調べ方

GoogleChromeブラウザでの調べ方です。

  1. 調べたい部分を左クリックで選択
  2. 右クリック → 「検証」で、開発ツールを表示
    検証をクリック
    このページを例にしています
  3. 開発ツールのソースを選択
  4. 右クリック → 「Copy」→「Copy XPath」でXPathをコピー
    xpathをコピー
  5. スプレッドシートの「お天気調べシート」 → 「A3」「B3」のXPath該当箇所にペースト
    xpathをペースト

XPathをコピペしたときに「"」が入っている場合は「'」へ変更しておきましょう。エラーになってしまいます。

IFERROR関数

お天気注意報(強風・雷)などが出ている場合は、XPathが変わります。注意報がある時・無い時で、データ取得できるように設定しています。

IFERROR – ドキュメント エディタ ヘルプ

その他

取得した日付データをそのまま表示すると「今日 ○月○日」と表示され、「今日 」の表記が邪魔になります。削除するために「SUBSTITUTE」関数を使っています。

SUBSTITUTE – ドキュメント エディタ ヘルプ

お天気情報の注意点

現サイトの中身を参照してデータを取得しますので、

  • サイトの大幅なリニューアル
  • 突発的なサイト変更

があった場合には、対応しきれません💦

その際は上記の関数を参考に、カスタムしていただければと思います🙇

一行日記シートにデータを追記・記録する

現在の天気情報が取得できたら次は、この(お天気調べシートにある)データを別のシート(一行日記)に記録していく設定をします。

GASとはJavaScriptをベースとしたスクリプト言語で、Gmail やGoogle ドキュメントなど、G Suite (現Google Workspace )のサービスどうしを簡単に連携したり、自動化したりなど、さまざまなことができるようになります。
JavaScriptをベースとしているので、これまでコードを書いたことがないという人でも比較的簡単にはじめられる点が特長です。

ノンプログラマーがすすめる、はじめてのGASプログラミング – ビジネスWebマガジン「Future Stride」|ソフトバンク

GAS(Google app Script) というスクリプトを利用します。
こちらの本 は、分かりやすくてオススメです😀

  1. 「ツール」 → 「スクリプト エディタ」を選択
    スクリプトエディタをクリック
  2. 「無題のプロジェクト」 → ファイル名を変更
    ここでは「夏休みのお天気」とします

    ファイル名を変更
  3. 以下のGASをコピペして下さい
function copyToSht() {

//スプレッドシートファイルの設定
const ss = SpreadsheetApp.openById('***********************');

//シートの設定
const DiarySht = ss.getSheetByName('一行日記');
const WethrSht = ss.getSheetByName('お天気調べ');

//一行日記の最終行取得
const lastRow = DiarySht.getLastRow();

//お天気情報の場所
const getRange = WethrSht.getRange('A3:B');

//一行日記 追記箇所
const setCell = DiarySht.getRange(lastRow+1,1);

//今のお天気情報を更新(取得)する
SpreadsheetApp.flush();

//お天気調べから一行日記へ、値を追記
getRange.copyTo(setCell, {contentsOnly:true});

}
GASの設定をする

上記のスクリプトで一箇所、各自で設定してもらう箇所があります。

スプレッドシートファイル アドレスの設定
//スプレッドシートファイルの設定
const ss = SpreadsheetApp.openById('***********************');

この部分の *********************** 部分に、スプレッドシートの該当アドレス部分をコピペします。

スプレッドシートファイルアドレスの、https://docs.google.com/spreadsheets/d/********************/edit
「***」で表示した部分です。

その他、シートの名前などを変更した場合はそれぞれ、スクリプトの中身を変更しておいてください😉

GASのテストをする

設定が終わったら、実行ボタンを押して動作テストをしてみましょう。

実行ボタン

GASを実行する際に「 承認が必要です 」という表示が出る場合は、こちらがとても参考になります!
参考:【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために

うまくいけば、「一行日記」シートに現在の日付と天気が記録されます。

決まった時間に動作するよう設定する

動作を確認したらあとは、

  • 決まった時間に1日1回
  • お天気情報を取ってくる

タイマー(トリガー)の設定をしましょう。

  1. GASファイルの「トリガー」(時計のアイコン)をクリック
    トリガーをクリック
  2. 関数 copyToSht 右側の鉛筆マーク(トリガーの編集)をクリック
    (画面キャプチャが取れませんでしたが、カーソルを乗せると表示されます)

    トリガーの編集をクリック
  3. 以下のように設定
項目 設定内容
実行する関数を選択 copyToSht
デプロイ時に実行 Head
イベントのソースを選択 時間主導型
時間ベースのトリガーのタイプを選択 日付ベースのタイマー
時刻を選択 午後1時~2時(好きな時間帯で構いません)
エラー通知設定 毎日通知を受け取る
  1. 設定が終わったら「保存」をクリック

これで1日1回、上の設定だとお昼頃にデータを記録する仕組みが完成しました。

注意点でも触れました が、頻回な情報取得を行うと相手のサイトにとても負荷がかかってしまいます。十分に気をつけて下さい🙇

動作確認したい場合はGASファイルの実行ボタンを押せば、押した時点のお天気情報が記録されます。

まとめ

途中、GASの設定が大変に感じるかもしれませんが、ゆっくりやればきっと大丈夫だと思います!

この仕組みを応用すればもう少し、いろんなこと(株価とか、取れるかも?)に使えそうです😀

私の、そして皆さんの夏休みの終わりのバタバタが、少しでも解消されますように…。


  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

Ads