FC2ブログ

駆け出しエンジニアの気ままにブログ

このブログでは、駆け出しエンジニアの私が興味をもったトピックについて不定期に発信しています。

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

category: スポンサー広告

tb: --   cm: --

スクリプト初心者のためのVBS「超」入門(3)~ゆっくりにニュースを読んでもらう~  

tv_yukkuri

VBS第3回目は、前回宣言した『ゆっくりにニュースを読んでもらう』VBSをつくっていきます。

・・・前回から1ヶ月以上間が空いてしまいました。すみません。(― ―;)

さて、気を取り直して・・・

ゆっくりにニュースを読んでもらうための手順は
1)Webから、ニュースの文章をテキストファイルへ出力する
2)出力したテキストファイルの内容をゆっくりに読んでもらう(※)
という2つの手順で実現していきます。
※ゆっくりに読んでもらうためには、Softalkをインストールしておく必要があります。詳しくはコチラ


ちなみにVBS(Visual Basic Script)とは・・・
Windowsで動くとても便利なスクリプトです。
例えば、会議室の予約確認やデータのダウンロードなど、日常業務には決まりきった作業がつきものですよね。
こんな時、VBSを組んでおくことで作業を完全に自動化できちゃいます。
しかも、
・ソフトのインストールやセットアップが不要で、
・Windowsが入っていればできますので(基本的に)
誰でもすぐに出来るようになります。

尚、VBSを実行するときの手順は、以下の通りです。
 手順1)新規テキストドキュメントを作成します。メモ帳でOK。
 手順2)スクリプトをコピペします。
 '(ココから)
 '――すくりぷと――
 '(ココまで)
 手順3)上書き保存した後、ファイル名を"progXXX.vbs"とします。拡張子を”.vbs”にすればOKです。
 手順4)作成したファイルのアイコンをダブルクリックして起動してみてください。
 ※再編集する場合は、”プログラムから開く”を選択してメモ帳などで編集します。

まずは、Webからニュースをテキストファイルへ書き出す部分をつくってみましょう。

対象のニュースはYahoo!ニュース、読売オンラインでも何でも良いのですが、今回はこのブログの『一週間ニュースまとめ』の記事(※)を対象とします。
※http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html

1)Webから、ニュースの文章をテキストファイルへ出力する(prog004.vbs)

例)指定したWebページの文章をnews_temp.txtファイルに保存するスクリプト
 '(ココから)

 '変数など明示的に表現することを宣言します。
 Option Explicit

 '変数を宣言します。
 Dim objIE		'IEオブジェクト用
 Dim objFSO 		'FileSystemObject
 Dim objFile		'ファイル書き込み用
 Dim txt_temp,txt_main	'文章の一次保存用
 Dim p_start, p_end	'開始場所、終了場所

 'ファイルシステムにアクセス、IEアクセス用のオブジェクトを作成
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 Set objIE = CreateObject("InternetExplorer.Application")

 'IEオブジェクトに、このブログの「ニュース纏め」のURLを設定
 objIE.Navigate "http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html"
 objIE.Visible = True
 WScript.sleep 1000

 '指定したWebページから指定した範囲のテキストを取り出す
 'txt_tempにウェブページのinntertext部分を一次保存
 txt_temp = objIE.document.body.innertext
 '取り出したいテキストの開始場所の行を設定
 p_start = InStr(txt_temp, "今週も、先週の")
 '取り出したいテキストの終了場所の行を設定
 p_end = InStr(p_start, txt_temp, "m(_ _)m")
 'txt_tempから、取り出したいテキストの範囲を指定してtxt_mainに保存
 If (p_start > 0) And (p_end > 0) Then
      txt_main = Mid(txt_temp, p_start, p_end - p_start)
 Else
      WScript.Echo "エラー: " & Err.Description
 End If

 'txt_mainに保存した文章をファイルnews_temp.txtに保存する
 If Err.Number = 0 Then
     'テキストファイルオブジェクトを作成します。
     Set objFile = objFSO.OpenTextFile("news_temp.txt", 2, True)
     If Err.Number = 0 Then
         'オブジェクトに文字列を書き込みます。
         objFile.Write(txt_main)
         objFile.Close
     Else
         WScript.Echo "ファイルオープンエラー: " & Err.Description
     End If
 Else
     WScript.Echo "エラー: " & Err.Description
 End If
 On Error Resume Next
 WScript.sleep 1000

 'インターネットエクスプローラを終了します
 objIE.Quit

 'オブジェクトを破棄します
 Set objIE = Nothing
 Set objFile = Nothing
 Set objFSO = Nothing

 '(ココまで)

URL部分(p_start,p_endも)を変えることで、他のニュースも取得することができます。


続いて・・・

2)出力したテキストファイルの内容をゆっくりに読んでもらう(prog005.vbs)

本日のメインです!!

prog004.vbs と前回の prog003.vbs を組み合わせて、ゆっくりに指定したWebページのニュースを読んでもらうスクリプトをつくります。

例)指定したWebページのニュースをゆっくりに読んでもらうスクリプト

前処理として、前回同様softalkフォルダをCドライブの直下に置いて下さい(c:\softalk)。
また、作成するVBSのファイル(prog005.vbs)も、sortalkフォルダに格納してください(c:\softalk\prog005.vbs)。
※フォルダ指定の際にフルパスで指定している.exeファイルを書き換えれば、他フォルダに格納していても構いません。

 '(ココから)

 '変数など明示的に表現することを宣言します。
 Option Explicit

 '変数を宣言します。
 Dim objIE		'IEオブジェクト用
 Dim objFSO 		'FileSystemObject
 Dim objFile		'ファイル書き込み用
 Dim txt_temp,txt_main	'文章の一次保存用
 Dim p_start, p_end	'開始場所、終了場所
 Dim WshShell		'WindosShellスクリプト用
 Dim objExec		'exeファイル実行用

 'オブジェクトを作成
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 Set objIE = CreateObject("InternetExplorer.Application")
 Set WshShell = WScript.CreateObject("WScript.Shell")

 'このブログの「ニュース纏め」のURLを設定
 objIE.Navigate "http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html"
 objIE.Visible = True
 WScript.sleep 1000

 '指定したWebページから指定した範囲のテキストを取り出す
 txt_temp = objIE.document.body.innertext
 p_start = InStr(txt_temp, "今週も、先週の")
 p_end = InStr(p_start, txt_temp, "m(_ _)m")
 If (p_start > 0) And (p_end > 0) Then
      txt_main = Mid(txt_temp, p_start, p_end - p_start)
 Else
      WScript.Echo "エラー: " & Err.Description
 End If

 If Err.Number = 0 Then
     Set objFile = objFSO.OpenTextFile("news_temp.txt", 2, True)
     If Err.Number = 0 Then
         objFile.Write(txt_main)
         objFile.Close
     Else
         WScript.Echo "ファイルオープンエラー: " & Err.Description
     End If
 Else
     WScript.Echo "エラー: " & Err.Description
 End If
 On Error Resume Next
 WScript.sleep 1000

 'ゆっくりにニュースの文章を保存したテキストを読み上げてもらいます。
 Set objExec = WshShell.Exec("C:\softalk\SofTalk.exe C:\softalk\news_temp.txt")
 Do While objExec.Status = 0
    WScript.Sleep 200
 Loop

 objIE.Quit

 Set objIE = Nothing
 Set objFile = Nothing
 Set objFSO = Nothing
 Set objExec = Nothing
 Set WshShell = Nothing

 '(ココまで)

さて準備ができたら、prog005.vbsをダブルクリックして実行してみましょう!!

ゆっくりが「一週間ニュースまとめ」の内容を読み上げてくれるはずです。

動かない場合は、

・Softalkはダウンロードしてあるか、
・ファイルの格納場所は適切か?(SofTalkのフォルダ、prog005.vbsファイルの場所)
・細かなスペルが何か間違っていないか、

などを確認してみて下さい。


・・・ということで

VBSの第3回目は『ゆっくりにニュースを読んでもらう』処理をつくってみました。

ニュースだけじゃなく、Webページ全般に使える技術ですので他にも色々と応用してみてください☆

今後も自分でつくった簡単なVBSをちょくちょく紹介していきますので、お付き合下さい。

今回も最後まで読んでくださったかた。本当にありがとうございます。


(参考)
・ニコニコ動画で人気の「ゆっくり」を、駆け出しエンジニアが使ってみた
・VBS「超」入門
・スクリプト初心者のためのVBS「超」入門(2)

・WSHを始めよう―@IT
・VBScript/JScriptプログラミング&Tips for WSH - cafe de VBS

最速攻略 VBScriptサンプル大全集最速攻略 VBScriptサンプル大全集
(2006/03/28)
結城 圭介

商品詳細を見る


(2012年1月28日)

 


スポンサーサイト

category: VBS

tb: 0   cm: 0

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kazufumi1984engineer.blog.fc2.com/tb.php/26-096bcff2
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。