by manamana
27. 6月 2013 12:30
VBAでは構築が困難な例として、Webとの連携が挙げられます。
その点、PowerShell は .Net の資産を有効に使えるので Web から簡単に情報を取得出来ます。
New-WebServiceProxy
このコマンドレットは、 任意のWebサービスに接続して情報をXML形式で受け取ります。
後はそれを好きに加工して表示してやればいろいろ面白いことが出来るわけです。
気象情報でも取得しよう! と思った所、先人が居られました。とても参考になります。
PowerShellでGlobalWeatherから天気情報取得してみる
ここでは、例によって Excel PowerShell Tool で動かすようにします。
予め、観測地点の一覧をテーブル化し、リストから選択するという Excel っぽい感じです。
ソースです。Cellに直接データを入れています。もう力技ですねww
#@PSTOOL
$ws = $_Excel.Activesheet
$addin = $_Excel.ComAddins.Item("ExPSTool").Object
$city = $ws.Range("WeatherInfoCity").Value2
$web = New-WebServiceProxy -uri http://www.webservicex.net/globalweather.asmx
[xml]$xml = $web.GetWeather($city, "Japan")
$CurrentWeather = $xml.CurrentWeather
$rg = $ws.Range("WeatherInfo")
$rg.Cells.Item(1, 1).Value2 = $CurrentWeather.Time
$rg.Cells.Item(2, 1).Value2 = $CurrentWeather.Wind
$rg.Cells.Item(3, 1).Value2 = $CurrentWeather.SkyConditions
$rg.Cells.Item(4, 1).Value2 = $CurrentWeather.Temperature
$rg.Cells.Item(5, 1).Value2 = $CurrentWeather.RelativeHumidity
$rg.Cells.Item(6, 1).Value2 = $CurrentWeather.Pressure
東京を選んでみました。
次は普天間基地です。30℃超えてますね…
PowerShellで Excel を操作すると、反応が異様に遅いです。表示が目で追えるレベルです。
今回のようにデータ数が少なければ良いのですが、大量のデータを PowerShell 経由で Excel に出力するには
それなりの工夫が必要になります。この辺はまたの機会に…
ダウンロード↓↓↓
お天気.xlsx (17.19 kb)
755092ae-cd17-41b4-b6d1-3349b70af9a7|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags:
PowerShell