スポンサーリンク

WSH/JScriptで,Outlookを操作しよう (受信メール内からURLを抽出してみる)


WSHのバッチでOutlookにアクセスし,メーラー上の定型作業を済ませる。


そのための,"Outlook.Application"というAPIの使い方のサンプルコード。

サンプルコード

以下を open_url.js とかで保存し,ダブルクリック。

// Outlookの最新の受信メール内に記載されているURLをIEで開く
// 
// 参考:
// http://homepage3.nifty.com/aya_js/office2k/index.htm



// 新規outlookを起動
var outlook = WScript.CreateObject("Outlook.Application");



// 受信トレイを開く
var olFolderInbox = 6; // 受信トレイを表す定数
var name_space = outlook.GetNamespace("MAPI");
var folder = name_space.GetDefaultFolder( olFolderInbox );
folder.Display();
	// http://www.ken3.org/guchi/backno/guchi022.html
	
	// メールの合計件数を表示
	//WScript.Echo( folder.Items.Count );
	// 1件目のメール(=最も古いメール)の本文を表示
	//WScript.Echo( folder.Items(1).Body );



// 最新のメールの本文をHTMLソース形式で取得
var src = folder.Items( folder.Items.Count ).HTMLBody;
	//WScript.Echo( src );

	// Outlook VBAであれば,ActiveInspector.CurrentItemで
	// 現在表示中のメールアイテムにアクセスできる
	// http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23826&forum=8&start=8



// 本文からURLを抽出
var match_results = src.match( /<a href="(http:.+)">/i );
if( match_results != null )
{
	var link = match_results[1];
		// gオプション無しのString.matchは,
		// 最終マッチ文字列全体と,キャプチャ文字列たちの配列を返す。
		// http://d.hatena.ne.jp/chalcedony_htn/20090315/1237121111
	
		//WScript.Echo( link );

	// そのリンクをIEで開く
	var ie = WScript.CreateObject("InternetExplorer.Application");
	ie.Navigate( link );
	ie.Visible = true;
}
else
{
	WScript.Echo( "URLが記載されていません。" );
}


// Outlookの最新のウィンドウを閉じて終了する
outlook.explorers.Item( outlook.explorers.Count ).Close();
	// <EXCEL/VBA> OUTLOOKのウインドを閉じる方法
	// http://oshiete1.watch.impress.co.jp/qa5722929.html
	
	// outlookの全ウィンドウを終了したい場合
	//outlook.Quit();

コードの解説

細かな解説はコード中のURLを参照。


Outlookはメールソフトとしてはとにかく重い,という点が不評。

しかし重いだけあって,他のMS製品と同じく充実したAPIが提供されている。



より詳しい情報を得たい場合,

  • Outlook VBA
  • Outlook アドイン

などのキーワードを追いかける事になるだろう。