LoginSignup
6
6

More than 5 years have passed since last update.

EvernoteAPIをnode.jsでいじる

Last updated at Posted at 2015-11-07

環境はCentOS6.6です。
デベロッパートークンはすでに取得済みであることを前提とします。

node.jsのインストール

$ sudo yum groupinstall 'Development tools'
$ wget http://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz
$ tar xvf node-v0.12.0.tar.gz
$ cd node-v0.12.0/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

バージョン確認。

$ node -v
v0.12.0
$ npm -v
2.5.1

プロジェクトを作成

ディレクトリを作成&移動して、jsファイルを作成します。

$ mkdir EvernoteSampleApp
$ cd EvernoteSampleApp
$ touch index.js

モジュールのインストール

$ npm install evernote
$ npm install enml-js
$ npm install --save node-note
$ npm install async

コード

index.jsをエディタで開いてカタカタ。ちなみに私はAtomで。
ここでやってるのは、新規ノートの作成と、最初のノートの情報を取得→ENML→HTML変換。

index.js
var Evernote = require('evernote').Evernote;
var ENML = require('enml-js');                  //ENMLをHTMLにしてくれたり。
var nodeNote = require('node-note');            //ノートを簡単に作成してくれたり。
var async = require('async');                   //非同期処理を楽にしてくれたり。

var DEVELOPER_TOKEN = "<YOUR_DEVELOPER_TOKEN>";  //デベロッパートークン

var client = new Evernote.Client({ token: DEVELOPER_TOKEN });
var noteStore = client.getNoteStore();
var noteFilter = new Evernote.NoteFilter();
var notesMetadataResultSpec;

// 新規ノート作成
/*--------------------------------------------------------------------*/
var evernote = new nodeNote({token: DEVELOPER_TOKEN, sandbox: true});

var options = {
  title: 'hoge',
  body: 'Create new note'
};

evernote.createNote(options, function (err,createdNote) {
  console.log('Create new note : complete' );
});


// ノートの各情報を取得
/*--------------------------------------------------------------------*/

notesMetadataResultSpec = new Evernote.NotesMetadataResultSpec({
    includeTitle: true,
    includeAttributes: true
});

// 非同期処理
async.waterfall([

    // ノート検索?
    function(callback){
        noteStore.findNotesMetadata(noteFilter, 0, 100, notesMetadataResultSpec, function(err, notes) {
            console.log(err || notes);
            if(notes){
                callback( null, JSON.stringify(notes) );
            }
        });
    },

],function(err, result){

    // ひとつ目のノートそ取得してHTML形式で表示
    var getMetaData = JSON.parse(result);
    noteStore.getNote(getMetaData.notes[0].guid, true, true, true, true, function(err, note) {
        console.log(err || ENML.HTMLOfENML(note.content, note.resources));
    });

});

ENMLは、Evernoteノートの記述に使用されるマークアップ言語。
HTMLタグもサポートされてるけど、idとかclassとかは使えない。

実行

$ node index.js

参考サイト

[1].npmの基本的な使い方まとめ - うなの日記
[2].Node.js error in noteStore.findNotes and noteStore.findNotesMetadata - Evernote for Developers - Evernote User Forum
[3].node.jsのいろいろなモジュール17 – asyncで非同期処理のフロー制御

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6