柄スタイル

ここは文系のオッサンがITに立ち向かう所

Google Driveを使って天気予報をメールする

      2015/11/02

クジラ飛行机「仕事に役立つJavaScript入門」のGoogle Driveのスクリプトを使って毎朝の天気情報をメールしようを参考にして天気予報を取得します

Google Driveのスクリプト機能を利用して、毎朝、その日の天気や気温の予報をメールするように簡単なプログラムを作ってみましょう。Googleアカウントを持っている人なら、ちょっとした手順で設定できます。

コードの入力

Google Driveを開いて 新規→その他→Google Apps Script→空のスクリプト をクリックします。「無題のプロジェクト」が立ち上がります。表示されているコードは消しておきます。

ここのコードを参考に記述します。

// --- 設定する項目 ---
// 天気のRSSを指定
var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/days/5010.xml";
// メールの送信先とタイトルの指定
var MAIL_TO = "hoge@gmail.com";
var MAIL_TITLE = "[天気予報]";

// --- プログラム ---
// メール送信関数
function checkWeatherAndMail() {
// データを取得
var rss = UrlFetchApp.fetch(URI_RSS);
if (rss.getResponseCode() != 200) {
Logger.log("RSSの取得に失敗しました。");
return;
}
// XMLをパースする
var txt = rss.getContentText();
var doc = XmlService.parse(txt);
var item_list = doc.getRootElement().getChild("channel").getChildren("item");
// 各タグを巡回
var res = "";
var today = "";
var today_link = "";
for (var i in item_list) {
var item = item_list[i];
var title = item.getChild("title").getText();
var desc = item.getChild("description").getText();
var link = item.getChild("link").getText();
res += "* " + title + "\n";
if (today == "") {
today = desc;
today_link = link;
}
}
// メール送信
var body = res + "(詳細) " + today_link + "\n";
MailApp.sendEmail(MAIL_TO, MAIL_TITLE + " " + today, body);
Logger.log(body);
}

コードの実行

▶(実行)をクリックします。「承認が必要です This app needs authorization to run.」と聞かれるので「続行」をクリックします。「first script が次の許可をリクエストしています」と聞かれるので「承認する」をクリックします。

承認が必要です

承認が必要です

天気予報が次の許可をリクエストしています

天気予報が次の許可をリクエストしています

実行の結果

自分のGmailに「[天気予報] ** - **℃/**℃」という題名のメールが届きます。本文には1周間の天気予報、最高最低気温、注意報警報が書かれています。

天気予報中部(静岡)

天気予報中部(静岡)

それからGoogle Driveを見るとスクリプト「天気予報をメールで送る」が保存されています。

マイドライブ天気予報をメールで送る

マイドライブ天気予報をメールで送る

他の方法を試してみる

静岡県

提供RSS

提供RSS

提供RSSの東海地方→静岡県のリンクアドレスをコピーします。3行目をに貼り付けます。

var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/days/22.xml";

実行すると静岡県の各地域の今日明日の最高最低気温、注意報警報が書かれています。

静岡県の天気予報

静岡県の天気予報

県庁所在地

上と同様に3行目を変更します。一番最初に行ったコードと同じになります。静岡県の県庁所在地静岡市は中部なので、中部の天気用法が届きます。

静岡

リンクアドレスが県庁所在地と同じなので、同じ結果が出ます。

網代

var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/days/5020.xml";

実行すると伊豆(網代)の各地域の今日明日の最高最低気温、注意報警報が書かれています。

三島

var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/days/5030.xml";

実行すると東部(三島)の各地域の今日明日の最高最低気温、注意報警報が書かれています。

浜松

var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/days/5040.xml";

実行すると西部(浜松)の各地域の今日明日の最高最低気温、注意報警報が書かれています。

警報・注意報

var URI_RSS = "http://rss.weather.yahoo.co.jp/rss/warn/22.xml";

実行すると県内各地域の警報・注意報の有無のみわかります。他の地域もそうですが、有無でなくて内容を知りたいところですが仕方ないですね。

天気予報 警報・注意報

天気予報 警報・注意報

定期的に実行する

毎朝朝天気予報が見れるように設定してみます。

リソース→すべてのトリガー をクリックします。「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」

トリガーが設定されていません

トリガーが設定されていません

と表示されるのでリンクをクリックします。実行を「checkWeatherAndMail」、イベントを「時間主導型」「日タイマー」「午前 6時〜7時」にして「保存」をクリックします。

すべてのトリガー実行イベント

すべてのトリガー実行イベント

これで毎朝天気予報が届きます。また時タイマーにして数時間おきに送信でも良いかもしれません。

 

 - script ,