WindowsでもGoogleReaderでスターを付けたエントリをまとめてEvernoteへ自動クリッピング出来そうです
2010.02.09
以前にGoogleReaderでスターを付けたエントリをまとめてEvernoteへ自動クリッピング(ただしMac限定)というエントリ書いたら思いのほかはてブされていてEvernoteの注目度って特にあすなろBLOGで高いのかなぁと感じ、調子にのってWindowsでも自動的にクリッピングするやり方ないか考えてみました
最初はMac版とWindows版のそれぞれのEvernoteクライアントの機能の違いがあることに気付かず同じようなやり方を考えたのですが結局上手くいかなかったので、方針転換して、Windows2000以降に標準的に備わっているWSH+JScriptでDOMとCDO.Messageというコンポーネントを使ったスクリプトを書いてみました。
xx日前のフィードまで遡って情報取得するとかは全然考慮していないやっつけ仕事な感じの、全然美しくないソースでもう少しスマートな形にしたら公開しようかと思ったのですが、誰かが綺麗に書き換えてくれることを祈って下記に記載しておきます
下記のソースをメモ帳など任意のテキストエディタにコピペ。
そして4ヶ所それぞれの環境に合わせて変更する箇所があります。(変更箇所はこのエントリの上部に記載した画面キャプチャの黄色い箇所になりますのでそちらも合わせてご確認を)
変更が終わったら、拡張子が jsとなるように適当なファイル名で保存して、ダブルクリックして実行すればEvernoteに自動的に投稿されるはずです。
var fileXML = '1.ご自身のGoogleReaderのStarredのフィード指定';
var oDOM = WScript.CreateObject('MSXML2.DOMDocument');
oDOM.async = false;
oDOM.load(fileXML);
var objNodeList = oDOM.selectNodes('//entry/content');
var result = [];
for (var i=0;i<objNodeList.length;i++){
result.push(objNodeList[i].text);
}//2010年3月11日追記以下一文抜けていました
var mailbody = result.join('<hr>');
var objMsg = WScript.CreateObject("CDO.Message");
var objBodyPart = objMsg.BodyPart;
objBodyPart.Charset = "UTF-8";
var schema = "http://schemas.microsoft.com/cdo/configuration/";
var mailaddress = "2.Gmailアドレスを指定";
objMsg.From = mailaddress;
objMsg.To = "3.Evernoteのメール投稿用のアドレスを指定";
objMsg.Subject = "CDOを利用する";
objMsg.HTMLBody = mailbody;
objMsg.Configuration.Fields.Item(schema + "sendusing") = 2;
objMsg.Configuration.Fields.Item(schema + "smtpserver") = "smtp.gmail.com";
objMsg.Configuration.Fields.Item(schema + "smtpserverport") = 465;
objMsg.Configuration.Fields.Item(schema + "sendusername") = mailaddress;
objMsg.Configuration.Fields.Item(schema + "sendpassword") = "4.Gmailのパスワードを指定";
objMsg.Configuration.Fields.Item(schema + "smtpusessl") = true;
objMsg.Configuration.Fields.Item(schema + "smtpauthenticate") = true;
objMsg.Configuration.Fields.Update();
objMsg.Send();
ソシム
売り上げランキング: 211161
投稿者 : 小山田 浩 | 投稿日時 : 2010.02.09 22:32
あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。
名前:パソナテック小山田2010年03月11日 20:57
よしおかさん、コメントありがとうございますー
ソースコピーするときに1行コピーし忘れていました(苦笑)
var objMsg・・・の前に以下一文を足せば動きます
var mailbody = result.join('');
記載したソースをじっさいによしおかさんのお手元の環境で試してもらっていないと、自分のこのうっかりミスがそのままになっていたので、チェックをしてもらったことに感謝します!
名前:さとる2011年01月14日 06:12
今日、このスクリプトを実行してみましたがevernoteから下記のエラーが戻ってきます。
Evernote was unable to submit your note for the following reason:
Emailed note was received, but an internal error occured while processing it. This may be because the note/email is broken, or due to some other factor. Please try sending the note again later.
[Caught an exception while parsing the note. All of these are fatal]
evernoteとgoogle readerの同期が出来ればた変使いやすくなるのでどうかご教授願います。
名前:パソナテック小山田2011年01月18日 08:09
さとるさん、スクリプト試してもらってありがとうございます。
evernoteとgoogle readerの同期が出来るとたしかに便利になりますよね。
このスクリプトですが、gmailのSMTPサーバ経由で、Evernoteのメール投稿機能を利用してます
エラー内容見る限り、Evernoteのサーバ側でメール受信する処理でエラーになっているような気がしていますが確証が持てません。
そのため問題切り分けのために下記の点を確認いただければと思います。
・スクリプトを実行した時間帯のGmailのSent(送信済)ボックスを開き、スクリプト経由で送ったメールがあるかどうか







名前:よしおか2010年03月10日 02:52
こんばんは、すばらしいエントリに感謝です。
早速試させて頂いたのですが、"mailbodyが宣言されていません"とエラーとなってしまいどうしてもできません。
もし解決方法をご存じでしたら教えて頂けると非常に嬉しいです。