「Yahoo!天気情報」の版間の差分
ナビゲーションに移動
検索に移動
細 (→sukemaru 版) |
(→sukemaru 版: 画像を追加) |
||
36行目: | 36行目: | ||
== sukemaru 版 == | == sukemaru 版 == | ||
<blockquote> | <blockquote> | ||
・気象情報がドキュメント内に書きこまれても困りますよね?<br> | ・気象情報がドキュメント内に書きこまれても困りますよね?<br> | ||
・アウトプットバーが開くとジャマじゃないですか?<br> | ・アウトプットバーが開くとジャマじゃないですか?<br> | ||
・メッセージボックスだと警告サウンドがウルサイかもしれません…<br> | |||
→ ポップアップメニューだったら「イイ感じ」じゃん! | → ポップアップメニューだったら「イイ感じ」じゃん! | ||
</blockquote> | </blockquote><br clear=all> | ||
[[ファイル:Yahoo! 天気情報.png|link=|ポップアップメニュー/ダイアログ表示]] | |||
<br clear=all><br> | |||
kuro 版をベースにして '''<q>ポップアップメニュー</q>、<q>アウトプットバー</q>、<q>メッセージボックス</q>''' のいずれで表示するかを選択できるようにしました。 | |||
<br> | |||
==== ポップアップメニュー ==== | |||
設定項目 <code>outputEnable</code> と <code>alertEnable</code> の '''両方が <span style="color:#c00;">false</span>''' ならポップアップメニューで表示します。 | |||
* 「― Yahoo! 天気・災害 ―」の行をクリックすると、気象情報のページをブラウザで開きます。 | |||
* 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。 | |||
* ポップアップメニューは <kbd>Space</kbd> キーでキャンセルできるようにしてあります。 | |||
==== アウトプット ==== | |||
設定項目 <code>outputEnable</code> が <b style="color:#0000c0;">true</b> ならアウトプットバーに表示します。 | |||
<br> | <br> | ||
==== メッセージボックス ==== | |||
設定項目 <code>alertEnable</code> が <b style="color:#0000c0;">true</b> ならメッセージボックスで表示します。 | |||
* 設定項目 <code>confirmEnable</code> が <b style="color:#0000c0;">true</b> のときは確認ダイアログ、<b style="color:#c00;">false</b> のときは警告ダイアログで表示します。 | |||
* 設定項目 <code>confirmEnable</code> が <b style="color:#0000c0;">true</b> のとき、<kbd>OK</kbd> をクリックすると、気象情報のページをブラウザで開きます。 | |||
<br> | |||
ピンポイント天気の URL は、「[https://weather.yahoo.co.jp/weather/ Yahoo!天気・災害]」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[https://www.yahoo-help.jp/app/answers/detail/p/616/a_id/44558/~/%E5%B8%82%E5%8C%BA%E7%94%BA%E6%9D%91%E3%81%94%E3%81%A8%E3%81%AE%E5%A4%A9%E6%B0%97%E6%83%85%E5%A0%B1%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84%EF%BC%88%E3%83%94%E3%83%B3%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%A4%A9%E6%B0%97%EF%BC%89] | ピンポイント天気の URL は、「[https://weather.yahoo.co.jp/weather/ Yahoo!天気・災害]」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[https://www.yahoo-help.jp/app/answers/detail/p/616/a_id/44558/~/%E5%B8%82%E5%8C%BA%E7%94%BA%E6%9D%91%E3%81%94%E3%81%A8%E3%81%AE%E5%A4%A9%E6%B0%97%E6%83%85%E5%A0%B1%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84%EF%BC%88%E3%83%94%E3%83%B3%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%A4%A9%E6%B0%97%EF%BC%89] | ||
<br> | <br> | ||
==== ソースコード ==== | |||
;ダウンロード >> 「[[ファイル:Yahoo!_天気情報.zip]]」(アイコン入り) | ;ダウンロード >> 「[[ファイル:Yahoo!_天気情報.zip]]」(アイコン入り) | ||
最終更新: 2020/05/11(第2版) | |||
<source lang="javascript"> | <source lang="javascript"> | ||
#title = "Yahoo! 天気情報..." | #title = "Yahoo! 天気情報..." | ||
61行目: | 83行目: | ||
* www: http://www.haijin-boys.com/ | * www: http://www.haijin-boys.com/ | ||
* --------------------------------------------------------- | * --------------------------------------------------------- | ||
* Modified by sukemaru, 2020/01/02 | * Modified by sukemaru, 2020/01/02 - 2020/05/11 | ||
* https://www.haijin-boys.com/wiki/Yahoo!天気情報#sukemaru_版 | |||
* 2020/05/11: ダイアログ表示の変更 (警告 ⇒ 確認) | |||
* 現在日時のステータス表示を追加 | |||
* --------------------------------------------------------- | * --------------------------------------------------------- | ||
* | |||
* 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。 | * 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。 | ||
* | * ポップアップメニューの「― Yahoo! 天気・災害 ―」の行をクリックすると | ||
* 気象情報をブラウザで開きます。 | * 気象情報をブラウザで開きます。 | ||
* | * (※ confirmEnable = true なら確認ダイアログを出してからブラウザで開く) | ||
* 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。 | |||
*/ | */ | ||
76行目: | 103行目: | ||
// ■ ダイアログに表示 | // ■ ダイアログに表示 | ||
var alertEnable = false; | var alertEnable = false; | ||
// ■ ブラウザで開くまえに確認ダイアログを表示 | |||
var confirmEnable = true; | |||
// ■ 地域を指定 (URL) | // ■ 地域を指定 (URL) | ||
95行目: | 125行目: | ||
// ---------- ▲ 設定項目 ▲ ---------- | // ---------- ▲ 設定項目 ▲ ---------- | ||
Status = " " + DateTimeEx( new Date() ); | |||
// RSS を取得 | |||
var x = new ActiveXObject( "Microsoft.XMLDOM" ); | var x = new ActiveXObject( "Microsoft.XMLDOM" ); | ||
x.async = false; | x.async = false; | ||
104行目: | 136行目: | ||
for ( var i = 0, iLen = items.length; i < iLen; i ++ ) { | for ( var i = 0, iLen = items.length; i < iLen; i ++ ) { | ||
var children = items[i].childNodes; | var children = items[i].childNodes; | ||
for ( var j = 0, cLen = children.length; j < cLen; j ++ ) { | for ( var j = 0, cLen = children.length, c; j < cLen; j ++ ) { | ||
c = children[j]; | |||
a.push( | if ( c.nodeName == "title" ) { | ||
a.push( c.text ); | |||
} | } | ||
if ( ! dateTime && | if ( ! dateTime && c.nodeName == "pubDate" ) { | ||
dateTime = | dateTime = DateTimeEx( c.text ); | ||
} | } | ||
} | } | ||
} | } | ||
var reg = / - Yahoo!天気・災害$/gm; | var reg = / - Yahoo!天気・災害$/gm; | ||
var url = weatherURL ? weatherURL : "https://weather.yahoo.co.jp/weather/"; | |||
var confirmStr = "気象情報をブラウザで開きますか? "; | |||
// アウトプットバーで表示 | // アウトプットバーで表示 | ||
if ( outputEnable ) { | if ( outputEnable ) { | ||
OutputBar.Writeln( dateTime + " 更新 | OutputBar.Writeln( dateTime + " 更新 \n" | ||
+ "- Yahoo!天気・災害 - \n" | + "- Yahoo!天気・災害 - \n" | ||
+ a.join( "\n" ).replace( reg, "" ) + "\n" ); | + a.join( "\n" ).replace( reg, "" ) + "\n" ); | ||
126行目: | 161行目: | ||
if ( alertEnable ) { | if ( alertEnable ) { | ||
a.splice( a.length-3, 0, "" ); | a.splice( a.length-3, 0, "" ); | ||
var messageStr = " - Yahoo!天気・災害 - \n " + dateTime + " 更新 \n\n" | |||
+ a.join( "\n" ).replace( /(\d+)(?=日)/g, PadSpc ) | |||
.replace( /【 ([^ ]{2}) 】/g, "【 $1 】" ) | |||
.replace( /】\s*/g, "】 " ) | |||
.replace( reg, " " ).replace( / (\S+)$/gm, "\t$1" ); | |||
if ( ! confirmEnable ) { | |||
Alert( messageStr ); | |||
} | |||
else if ( Confirm( messageStr + "\n\n" + confirmStr ) ) { | |||
new ActiveXObject( "WScript.Shell" ).Run( url ); | |||
} | |||
} | } | ||
// ポップアップメニューで表示 | // ポップアップメニューで表示 | ||
if ( ! outputEnable && ! alertEnable ) { | if ( ! outputEnable && ! alertEnable ) { | ||
var menuPos = 1; // ■ 1 ならマウス位置 / 0 ならキャレット位置にポップアップ | var menuPos = 1; // ■ 1 ならマウス位置 / 0 ならキャレット位置にポップアップ | ||
var menu = CreatePopupMenu(); | var menu = CreatePopupMenu(); | ||
a.splice( 1, 0, "" ); | a.splice( 1, 0, "" ); | ||
a.splice( 9, 0, "" ); | |||
a.unshift( " ― Yahoo! 天気・災害 ― ", " " + dateTime + " 更新& ", "" ); | a.unshift( " ― Yahoo! 天気・災害 ― ", " " + dateTime + " 更新& ", "" ); | ||
for ( var i = 0, len = a.length; i < len; i++ ) { | for ( var i = 0, len = a.length; i < len; i++ ) { | ||
menu.Add( a[i].replace( reg, "" ).replace( / - /, "\t" ) | menu.Add( a[i].replace( reg, "" ).replace( /(\d+)(?=日)/, PadSpc ) | ||
.replace( /【 ([^ ]{2}) 】/, "【 $1 】" ).replace( /】\s*/g, "】 " ) | |||
.replace( reg, " " ).replace( / - (\S+)$/, "\t$1" ) | |||
// .replace( /】\s*/, "】 " ).replace( / - /, "\t" ) | |||
, ( i == 0 ) ? 1 : 0 | , ( i == 0 ) ? 1 : 0 | ||
, a[i] ? 0 : meMenuSeparator ); | , a[i] ? 0 : meMenuSeparator ); | ||
} | } | ||
if ( menu.Track( menuPos ) == 1 && ( ! confirmEnable || Confirm( confirmStr ) ) ) { | |||
new ActiveXObject( "WScript.Shell" ).Run( url ); | new ActiveXObject( "WScript.Shell" ).Run( url ); | ||
} | } | ||
} | } | ||
function | Status = " " + DateTimeEx( new Date() ); | ||
/** | |||
* 関数 DateTimeEx( date ) | |||
* 引数の日時を日本時間 "YYYY年M月D日 h時mm分" の文字列で返す(秒なし) | |||
*/ | |||
function DateTimeEx( dt ) { | |||
var dd = new Date( Date.parse( dt ) ); | var dd = new Date( Date.parse( dt ) ); | ||
var m = dd.getMinutes() | var m = dd.getMinutes(), mm = m < 10 ? "0" + m : m; | ||
return dd.getFullYear() + "年" | return dd.getFullYear() + "年" + ( dd.getMonth() + 1 ) + "月" + dd.getDate() + "日 " | ||
+ dd.getHours() + "時" + mm + "分"; | + dd.getHours() + "時" + mm + "分"; | ||
} | |||
/** | |||
* 関数 DateTime( bar, utc ) | |||
* 現在日時を日本時間 "YYYY-MM-DD hh:mm:ss UTC+0900" の文字列で返す | |||
* 引数 bar は年月日の区切り文字 ( デフォルト: "/" ) | |||
* 引数 utc は文字列 "UTC+0900" の表示の設定用 ( true / false ) | |||
* 引数を省略した場合は "YYYY/MM/DD hh:mm:ss" の文字列で返す | |||
*/ | |||
function DateTime( bar, utc, dd ) { | |||
bar = bar || "/"; | |||
dd = dd || new Date(); | |||
var yymmdd = dd.getFullYear() + bar + ( dd.getMonth() + 1 ) + bar + dd.getDate(); | |||
var hhmmss = utc ? dd.toTimeString() | |||
: dd.toLocaleTimeString(); | |||
return PadZero( yymmdd + " " + hhmmss ); | |||
/** | |||
* 関数 PadZero( str ) | |||
* 文字列中の半角1ケタの数字を0埋めして2ケタで返す | |||
* 小数点(半角ドット)以下は0埋めしない | |||
*/ | |||
function PadZero( str ) { | |||
return String( str ).replace( /[0-9]+/g , function( $0 ) { | |||
return $0.length < 2 ? "0" + $0 : $0; | |||
} ); | |||
} | |||
} | |||
/** | |||
* 関数 PadSpc( str ) | |||
* 文字列中の半角1ケタの数字を0埋めして2ケタで返す | |||
* 小数点(半角ドット)以下は0埋めしない | |||
*/ | |||
function PadSpc( str ) { | |||
return String( str ).replace( /[0-9]+/g , function( $0 ) { | |||
return $0.length < 2 ? " " + $0 : $0; | |||
} ); | |||
} | } | ||
</source> | </source> |
2020年5月11日 (月) 23:57時点における版
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 版をベースにして ポップアップメニュー
、アウトプットバー
、メッセージボックス
のいずれで表示するかを選択できるようにしました。
ポップアップメニュー
設定項目 outputEnable
と alertEnable
の 両方が false ならポップアップメニューで表示します。
- 「― Yahoo! 天気・災害 ―」の行をクリックすると、気象情報のページをブラウザで開きます。
- 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。
- ポップアップメニューは Space キーでキャンセルできるようにしてあります。
アウトプット
設定項目 outputEnable
が true ならアウトプットバーに表示します。
メッセージボックス
設定項目 alertEnable
が true ならメッセージボックスで表示します。
- 設定項目
confirmEnable
が true のときは確認ダイアログ、false のときは警告ダイアログで表示します。 - 設定項目
confirmEnable
が true のとき、OK をクリックすると、気象情報のページをブラウザで開きます。
ピンポイント天気の URL は、「Yahoo!天気・災害」のページ内(左上あたり)にある検索ボックスに郵便番号を入力して、開いたページで取得できます。[1]
ソースコード
- ダウンロード >> 「ファイル:Yahoo! 天気情報.zip」(アイコン入り)
最終更新: 2020/05/11(第2版)
#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 - 2020/05/11
* https://www.haijin-boys.com/wiki/Yahoo!天気情報#sukemaru_版
* 2020/05/11: ダイアログ表示の変更 (警告 ⇒ 確認)
* 現在日時のステータス表示を追加
* ---------------------------------------------------------
*
* 設定 outputEnable と alertEnable の両方が false ならポップアップメニューで表示。
* ポップアップメニューの「― Yahoo! 天気・災害 ―」の行をクリックすると
* 気象情報をブラウザで開きます。
* (※ confirmEnable = true なら確認ダイアログを出してからブラウザで開く)
* 「― Yahoo! 天気・災害 ―」以外の場所をクリックした場合は、ポップアップを閉じます。
*/
// ---------- ▼ 設定項目 ▼ ----------
// ■ アウトプットバーに表示
var outputEnable = false;
// ■ ダイアログに表示
var alertEnable = false;
// ■ ブラウザで開くまえに確認ダイアログを表示
var confirmEnable = true;
// ■ 地域を指定 (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/"; //「気象庁 | 気象情報」
// ---------- ▲ 設定項目 ▲ ----------
Status = " " + DateTimeEx( new Date() );
// RSS を取得
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, c; j < cLen; j ++ ) {
c = children[j];
if ( c.nodeName == "title" ) {
a.push( c.text );
}
if ( ! dateTime && c.nodeName == "pubDate" ) {
dateTime = DateTimeEx( c.text );
}
}
}
var reg = / - Yahoo!天気・災害$/gm;
var url = weatherURL ? weatherURL : "https://weather.yahoo.co.jp/weather/";
var confirmStr = "気象情報をブラウザで開きますか? ";
// アウトプットバーで表示
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, "" );
var messageStr = " - Yahoo!天気・災害 - \n " + dateTime + " 更新 \n\n"
+ a.join( "\n" ).replace( /(\d+)(?=日)/g, PadSpc )
.replace( /【 ([^ ]{2}) 】/g, "【 $1 】" )
.replace( /】\s*/g, "】 " )
.replace( reg, " " ).replace( / (\S+)$/gm, "\t$1" );
if ( ! confirmEnable ) {
Alert( messageStr );
}
else if ( Confirm( messageStr + "\n\n" + confirmStr ) ) {
new ActiveXObject( "WScript.Shell" ).Run( url );
}
}
// ポップアップメニューで表示
if ( ! outputEnable && ! alertEnable ) {
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( /(\d+)(?=日)/, PadSpc )
.replace( /【 ([^ ]{2}) 】/, "【 $1 】" ).replace( /】\s*/g, "】 " )
.replace( reg, " " ).replace( / - (\S+)$/, "\t$1" )
// .replace( /】\s*/, "】 " ).replace( / - /, "\t" )
, ( i == 0 ) ? 1 : 0
, a[i] ? 0 : meMenuSeparator );
}
if ( menu.Track( menuPos ) == 1 && ( ! confirmEnable || Confirm( confirmStr ) ) ) {
new ActiveXObject( "WScript.Shell" ).Run( url );
}
}
Status = " " + DateTimeEx( new Date() );
/**
* 関数 DateTimeEx( date )
* 引数の日時を日本時間 "YYYY年M月D日 h時mm分" の文字列で返す(秒なし)
*/
function DateTimeEx( 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 + "分";
}
/**
* 関数 DateTime( bar, utc )
* 現在日時を日本時間 "YYYY-MM-DD hh:mm:ss UTC+0900" の文字列で返す
* 引数 bar は年月日の区切り文字 ( デフォルト: "/" )
* 引数 utc は文字列 "UTC+0900" の表示の設定用 ( true / false )
* 引数を省略した場合は "YYYY/MM/DD hh:mm:ss" の文字列で返す
*/
function DateTime( bar, utc, dd ) {
bar = bar || "/";
dd = dd || new Date();
var yymmdd = dd.getFullYear() + bar + ( dd.getMonth() + 1 ) + bar + dd.getDate();
var hhmmss = utc ? dd.toTimeString()
: dd.toLocaleTimeString();
return PadZero( yymmdd + " " + hhmmss );
/**
* 関数 PadZero( str )
* 文字列中の半角1ケタの数字を0埋めして2ケタで返す
* 小数点(半角ドット)以下は0埋めしない
*/
function PadZero( str ) {
return String( str ).replace( /[0-9]+/g , function( $0 ) {
return $0.length < 2 ? "0" + $0 : $0;
} );
}
}
/**
* 関数 PadSpc( str )
* 文字列中の半角1ケタの数字を0埋めして2ケタで返す
* 小数点(半角ドット)以下は0埋めしない
*/
function PadSpc( str ) {
return String( str ).replace( /[0-9]+/g , function( $0 ) {
return $0.length < 2 ? " " + $0 : $0;
} );
}
スポンサーリンク