Yahoo!天気情報

2020年3月15日 (日) 20:37時点におけるSukemaru (トーク | 投稿記録)による版 (→sukemaru 版)

Yahoo! 天気情報の地域指定 URL は、「提供RSS - Yahoo!天気・災害」 のページで各地域のリンクURL末尾 ****.xml の部分を調べて、マクロのコード内の URL 書き換えてください。
(※ 各地域のリンク URL https://rss-weather.yahoo.co.jp/rss/days/<****>.xml の https://rss-weather を http://rss.weather に書き換えでもよい)

kuro 版

Yahooの天気情報を取得し、カーソル位置に挿入します。 使用前にurlの部分を任意の地域の情報に書き換えてください。

// -----------------------------------------------------------------------------
// Yahoo!天気情報
//
// Copyright (c) Kuro. All Rights Reserved.
// www:    http://www.haijin-boys.com/
// -----------------------------------------------------------------------------

// Yahoo!天気情報
// http://weather.yahoo.co.jp/weather/public/rss.html

var url = "http://rss.weather.yahoo.co.jp/rss/days/4410.xml";

var x = new ActiveXObject("Microsoft.XMLDOM");
x.async = false;
x.setProperty("ServerHTTPRequest", true);
x.load(url);
var items = x.getElementsByTagName("item");
for (var i = 0; i < items.length; i++) {
  var children = items[i].childNodes;
  for (var j = 0; j < children.length; j++) {
    if (children[j].nodeName == "title")
      document.selection.Text = children[j].text + "\n";
  }
}


sukemaru 版

・気象情報がドキュメント内に書きこまれても困りますよね?
・アウトプットバーが開くとジャマじゃないですか?
・ダイアログ表示だと警告サウンドがウルサイかもしれません…
→ ポップアップメニューだったら「イイ感じ」じゃん!


kuro 版をベースにして ポップアップメニュー、アウトプットバー、ダイアログ のいずれで表示するかを選択できるようにしました。
ポップアップメニューは Space キーでキャンセルできるようにしてあります。

また、ポップアップメニューの場合のみ、WEB ブラウザで気象情報のページを開くことができます。
ピンポイント天気の URL は、「Yahoo!天気・災害」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[1]

ダウンロード >> 「ファイル:Yahoo! 天気情報.zip」(アイコン入り)
#title = "Yahoo! 天気情報..."
#tooltip="Yahoo! 天気・災害"
// #icon="weather.ico"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",335

/**
 * ---------------------------------------------------------
 * Yahoo!天気情報
 * Original Copyright (c) Kuro. All Rights Reserved.
 * www:    http://www.haijin-boys.com/
 * ---------------------------------------------------------
 * Modified by sukemaru, 2020/01/02
 * ---------------------------------------------------------
 * 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。
 * ポップアップメニューの「Yahoo! 天気・災害」をクリックすると
 * 気象情報をブラウザで開きます。
 * 「Yahoo! 天気・災害」以外の場所をクリックした場合は、ポップアップを閉じます。
 */

// ---------- ▼ 設定項目 ▼ ----------

// ■ アウトプットバーに表示
var outputEnable = false;

// ■ ダイアログに表示
var alertEnable  = false;

// ■ 地域を指定 (URL)
var regionURL = "http://rss.weather.yahoo.co.jp/rss/days/4410.xml";	// 東京都

  // Yahoo! 天気情報の地域指定 URL は
  // https://weather.yahoo.co.jp/weather/rss/
  // のページで各地域のリンクURL末尾 "****.xml" の "****" 部分を調べて書き換えること
  // ※ 各地域のリンクURL https://rss-weather.yahoo.co.jp/rss/days/<****>.xml の
  //   "https://rss-weather" を "http://rss.weather" に書き換えでもよい

// ■ ポップアップメニューの「Yahoo! 天気・災害」をクリックしたときに開く URL
var weatherURL = "https://weather.yahoo.co.jp/weather/13/4410/13101.html";	// 千代田区のピンポイント天気

  // weatherURL = "";	//「Yahoo! 天気・災害」トップページ
  // weatherURL = "https://tenki.jp/";	//「日本気象協会 tenki.jp【公式】」
  // weatherURL = "https://www.jma.go.jp/jp/kishojoho/";	//「気象庁 | 気象情報」

// ---------- ▲ 設定項目 ▲ ----------


var x = new ActiveXObject( "Microsoft.XMLDOM" );
x.async = false;
x.setProperty( "ServerHTTPRequest", true );
x.load( regionURL );
var items = x.getElementsByTagName( "item" );
var a = [],  dateTime = "";
for ( var i = 0, iLen = items.length; i < iLen; i ++ ) {
  var children = items[i].childNodes;
  for ( var j = 0, cLen = children.length; j < cLen; j ++ ) {
    if ( children[j].nodeName == "title" ) {
      a.push( children[j].text );
    }
    if ( ! dateTime && children[j].nodeName == "pubDate" ) {
      dateTime = DateTime( children[j].text );
    }
  }
}
var reg = / - Yahoo!天気・災害$/gm;

// アウトプットバーで表示
if ( outputEnable ) {
  OutputBar.Writeln( dateTime + " 更新" + "\n"
                   + "- Yahoo!天気・災害 - \n"
                   + a.join( "\n" ).replace( reg, "" ) + "\n" );
  OutputBar.Visible = true;
}

// ダイアログで表示
if ( alertEnable ) {
  a.splice( a.length-3, 0, "" );
  Alert( " - Yahoo!天気・災害 - \n " + dateTime + " 更新\n\n"
       + a.join( "\n" ).replace( reg, "\t" ) );
}

// ポップアップメニューで表示
if ( ! outputEnable && ! alertEnable ) {
  // ■ true なら確認ダイアログを出してから開く / false なら確認なしで開く
  var confirmEnable = true;
  var confirmStr = "気象情報をブラウザで開きますか? ";
  var menuPos = 1;	// ■ 1 ならマウス位置 / 0 ならキャレット位置にポップアップ
  var menu = CreatePopupMenu();
  a.splice( 1, 0, "" );  a.splice( 9, 0, "" );
  a.unshift( " ― Yahoo! 天気・災害 ― ", " " + dateTime + " 更新& ", "" );
  for ( var i = 0, len = a.length; i < len; i++ ) {
    menu.Add( a[i].replace( reg, "" ).replace( / - /, "\t" )
            , ( i == 0 ) ? 1 : 0
            , a[i] ? 0 : meMenuSeparator );
  }
  var r = menu.Track( menuPos );
  if ( r == 1 && ( ! confirmEnable || Confirm( confirmStr ) ) ) {
    var url = weatherURL ? weatherURL : "https://weather.yahoo.co.jp/weather/";
    new ActiveXObject( "WScript.Shell" ).Run( url );
  }
}

function DateTime( dt ) {
  var dd = new Date( Date.parse( dt ) );
  var m = dd.getMinutes();  mm = m < 10 ? "0" + m : m;
  return dd.getFullYear() + "年"
       + ( dd.getMonth() + 1 ) + "月"
       + dd.getDate() + "日 "
       + dd.getHours() + "時" + mm + "分";
}
スポンサーリンク