「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と自作プログラムを組み合わせれば様々な作業を自動化することができます。























この記事へのコメントはありません。