|
|
| (同じ利用者による、間の7版が非表示) |
| 1行目: |
1行目: |
| Yahoo! 天気情報の地域指定 URL は、「[https://weather.yahoo.co.jp/weather/rss/ 提供RSS - Yahoo!天気・災害]」 のページで各地域のリンクURL末尾 <code>****.xml</code> の部分を調べて、マクロのコード内の URL 書き換えてください。
| | 2022年3月末でYahoo!天気 RSSの提供が終了したため、Yahoo!天気情報マクロは使用することができなくなりました。 |
| <br>(※ 各地域のリンク URL <code><nowiki>https://rss-weather.yahoo.co.jp/rss/days/<****>.xml</nowiki></code> の <code><nowiki>https://rss-weather</nowiki></code> を <code><nowiki>http://rss.weather</nowiki></code> に書き換えでもよい)
| |
| <br><br>
| |
|
| |
|
| == kuro 版 == | | == 概要 == |
| Yahooの天気情報を取得し、カーソル位置に挿入します。
| | Yahooの天気情報を取得し、カーソル位置に挿入します。使用前にurlの部分を任意の地域の情報に書き換えてください。 |
| 使用前にurlの部分を任意の地域の情報に書き換えてください。
| |
|
| |
|
| <source lang="javascript"> | | == ソースコード == |
| | <syntaxhighlight lang="javascript" copy> |
| // ----------------------------------------------------------------------------- | | // ----------------------------------------------------------------------------- |
| // Yahoo!天気情報 | | // Yahoo!天気情報 |
| // | | // |
| // Copyright (c) Kuro. All Rights Reserved. | | // Copyright (c) Kuro. All Rights Reserved. |
| // www: http://www.haijin-boys.com/ | | // www: https://www.haijin-boys.com/ |
| // ----------------------------------------------------------------------------- | | // ----------------------------------------------------------------------------- |
|
| |
|
| 26行目: |
24行目: |
| var items = x.getElementsByTagName("item"); | | var items = x.getElementsByTagName("item"); |
| for (var i = 0; i < items.length; i++) { | | for (var i = 0; i < items.length; i++) { |
| var children = items[i].childNodes;
| | var children = items[i].childNodes; |
| for (var j = 0; j < children.length; j++) {
| | for (var j = 0; j < children.length; j++) { |
| if (children[j].nodeName == "title")
| | if (children[j].nodeName == "title") { |
| document.selection.Text = children[j].text + "\n";
| | document.selection.Text = children[j].text + "\n"; |
| }
| | } |
| | } |
| } | | } |
| </source> | | </syntaxhighlight> |
| <br>
| |
| | |
| == sukemaru 版 ==
| |
| | |
| <blockquote>
| |
| ・気象情報がドキュメント内に書きこまれても困りますよね?<br>
| |
| ・アウトプットバーが開くとジャマじゃないですか?<br>
| |
| ・メッセージボックスだと警告サウンドがウルサイかもしれません…<br>
| |
| → ポップアップメニューだったら「イイ感じ」じゃん!
| |
| </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>
| |
| | |
| ==== メッセージボックス ====
| |
| 設定項目 <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]
| |
| <br>
| |
| | |
| ==== ソースコード ====
| |
| ;ダウンロード >> 「[[ファイル:Yahoo!_天気情報.zip]]」(アイコン入り)
| |
| 最終更新: 2020/05/11(第2版)
| |
| | |
| <source lang="javascript">
| |
| #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 + "分";
| |
| }
| |
| | |
| /**
| |
| * 関数 PadSpc( str )
| |
| * 文字列中の半角1ケタの数字を0埋めして2ケタで返す
| |
| * 小数点(半角ドット)以下は0埋めしない
| |
| */
| |
| function PadSpc( str ) {
| |
| return String( str ).replace( /[0-9]+/g , function( $0 ) {
| |
| return $0.length < 2 ? "\u2002" + $0 : $0;
| |
| } );
| |
| }
| |
| </source>
| |