「Mayhemと自作プログラムを組み合わせて使う。」でMayhemと自作プログラムを組み合わせれば、RSS Feed Alertイベントで更新を知ったブログの記事をEvernoteに取り込むことができる、と書いたので実際にやってみました。
- Mayhemを起動し、Choose Eventから「RSS Feed Alert」を選択します。
- 更新をチェックしたいRSSフィードのURLを指定します。
- Choose Reactionから「Run Program」を選択します。
- 「File:」には下記スクリプトを指定し、「Arguments:」には更新をチェックしたいRSSフィードのURLを指定します。
- スイッチを「ON」にし、RSSフィードが更新されるまでMayhemを起動したままにします(最小化はOK)。
- しばらく放っておくと、RSS Feed Alertイベントが発生したときにスクリプトが実行され、指定したRSSフィードの記事がEvernoteに取り込まれていることが確認できます。
※ 下記コードはテストで使用したRSSフィード「Yahoo!ニュース・トピックス」に合わせたコードになっていますので、実際には扱いたいRSSフィードに合わせてコードを変更する必要があります(特にリンク取得部分)。
※ Evernote Webクリッパーを利用しているため、要Evernote for Windows。
(わざわざEvernoteのIE用アドインを利用する必要もないのですが、以前にこれを利用したコードを書いたことがあったので再利用することにしました。)
Option Explicit Dim Args Dim Url Dim Link Dim Sel Dim CurNo Dim d Dim date1, date2 Dim i '引数取得 Set Args = WScript.Arguments If Args.Count > 0 Then Url = Args(0) End If Set Args = Nothing If Len(Url) < 1 Then WScript.Quit 'XML取得 Set d = Nothing '初期化 On Error Resume Next With CreateObject("MSXML2.XMLHTTP") .Open "GET", Url, False .Send If .Status = 200 Then Set d = .responseXML End With On Error GoTo 0 If d Is Nothing Then WScript.Quit '最新記事のリンクのみ取得 d.setProperty "SelectionLanguage", "XPath" Set Sel = d.SelectNodes("/rss/channel/item") CurNo = 0: date1 = Sel.Item(0).SelectSingleNode("pubDate").Text '初期化 For i = 1 To Sel.Length - 1 date2 = Sel.Item(i).SelectSingleNode("pubDate").Text If ComparePubDate(date1, date2) = 1 Then CurNo = i date1 = date2 End If Next Set Sel = Nothing Link = d.SelectNodes("/rss/channel/item")(CurNo).SelectSingleNode("link").Text Set d = Nothing 'IE用Evernoteアドインを利用して記事をEvernoteに取り込み With CreateObject("InternetExplorer.Application") .Visible = True .Navigate Link '表示待ち While .Busy Or .readyState <> 4 WScript.Sleep 100 Wend CreateObject("EvernoteIE.Addin").AddNote .document.Parentwindow '非常に時間が掛かる .Quit End With Private Function ComparePubDate(ByVal date1, ByVal date2) 'pubDateの比較 Dim d Dim elm Dim scr Set d = CreateObject("htmlfile") Set elm = d.createElement("span") elm.setAttribute "id", "result" d.body.appendChild elm scr = "var obj=document.getElementById('result');" scr = scr & "obj.innerText=1;" scr = scr & "var d1=new Date('" & date1 & "');" scr = scr & "var d2=new Date('" & date2 & "');" scr = scr & "if(d1.getTime()>d2.getTime()){obj.innerText=0};" d.parentWindow.execScript scr ComparePubDate = elm.innerText Set elm = Nothing Set d = Nothing End Function
以上のように、Mayhemと自作プログラムを組み合わせれば様々な作業を自動化することができます。
この記事へのコメントはありません。