Mayhem

[Mayhem]RSSフィードが更新されたら最新記事をEvernoteに取り込む。

Mayhemと自作プログラムを組み合わせて使う。」でMayhemと自作プログラムを組み合わせれば、RSS Feed Alertイベントで更新を知ったブログの記事をEvernoteに取り込むことができる、と書いたので実際にやってみました。

  1. Mayhemを起動し、Choose Eventから「RSS Feed Alert」を選択します。
  2. 更新をチェックしたいRSSフィードのURLを指定します。
  3. Choose Reactionから「Run Program」を選択します。
  4. File:」には下記スクリプトを指定し、「Arguments:」には更新をチェックしたいRSSフィードのURLを指定します。
  5. ※ 下記コードはテストで使用した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
  6. スイッチを「ON」にし、RSSフィードが更新されるまでMayhemを起動したままにします(最小化はOK)。
  7. しばらく放っておくと、RSS Feed Alertイベントが発生したときにスクリプトが実行され、指定したRSSフィードの記事がEvernoteに取り込まれていることが確認できます。

以上のように、Mayhemと自作プログラムを組み合わせれば様々な作業を自動化することができます。

Mayhemと自作プログラムを組み合わせて使う。前のページ

Internet Explorer用OneNoteアドオンを利用して指定したWebページをOneNoteに取り込むマクロ次のページ

関連記事

  1. Office関連

    [Mayhem]PowerPointマクロにショートカットキーを割り当てる。

    2012/4/20 追記:クイックアクセスツールバーのメニューを利用す…

  2. Mayhem

    Mayhemと自作プログラムを組み合わせて使う。

    「Mayhemを使ってみました。」でも紹介している通り、Mayhemに…

  3. Mayhem

    Mayhemの小ネタ

    「Mayhemを使ってみました。」でWindowsスクリプティング・ツ…

  4. Mayhem

    Mayhemを使ってみました。

    「マイクロソフト、Windowsスクリプティング・ツール「Mayhem…

  5. Mayhem

    MayhemのOfficeModulesが更新されました。

    MayhemのOfficeModulesが更新され、バージョンが1.0…

  6. Mayhem

    MayhemのFolder Changeイベントはいつ発生するのかを調べてみました。

    「Mayhemを使ってみました。」でWindowsスクリプティング・ツ…

コメント

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP