rcmdnk's blog

20130523_note_200_200

メモを取ることが出来るウェブサービスは沢山出来てきましたが、 なんだかんだでEvernoteが一番安定して使いやすいので メインのメモ帳となっています。

ターミナルで作業している時に、たまにちょっとしたメモとか 一次的に作ったスクリプトとか、どうしても、では無いけど もしかしたら後で見れたら便利かな、という様なものが出てきた時、 さくっとEvernoteに送れたら便利だと思ったので そんなスクリプトを書いてみました。

Evernote

Evetnote

今更説明不要かもしれませんが、Evernoteは “すべてを記憶する”と題打っているようにテキストは勿論、 画像や音声、動画等も記憶させておくことが出来、 後から編集も簡単に出来ます。

Webクリップなんかも簡単に出来るアドオンがあって 1 、 気になるページを簡単にメモしておくことが出来、 後から検索するにもEvernote内で探せば自分が必要だと思ったものからのみ 検索出来て便利です。

後、地味に便利なのがOCR機能で、適当な写真や画像を入れておいて、 その中に文字が入っていると検索でひっかかる様になるので、 ちょっと目の前の物をメモしたいときに取り敢えずiPhoneとかで写真を取って Evernoteに送っておけば、後からも簡単に検索出来て便利です。 この機能を最大限使っているのが名刺の管理で、カメラで取ったりこんなスキャナ:

を使ったりしてEvernoteへ突っ込んでおくと簡単に名刺が管理出来るし、 後から検索も簡単です。

Webからは勿論、Window/Mac/iPhone/Android…それぞれ用のソフトも あるのでどこからでも編集できるのですが、 携帯端末だと基本的にはオフラインにノートが保存されません。

ただ、有料のプレミアム会員なら各ノートブック毎オフラインに保存出来る機能があり、 無料でもお気に入り機能を使うと各ノート毎にオフラインにとっておくことが 出来る様です 2

evernote.sh

スクリプト

前置きが長くなりましたが、Evernoteへノートをコマンドラインから送るスクリプト の紹介です。

こんな感じ: warning 下のGistは更新してないのでこちらを: evernote_mail

evernote.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash
# evernote.sh
# send note to Evernote by email

# Constant values
TAGMARK="#"
NOTEBOOKMARK="@"

# Default values
def_attach=false
def_inputfile=""
def_address=""
def_addressother=""
def_title="By email"
def_tag=""
def_notebook=""

# set default values
attach=$def_attach
inputfile=$def_inputfile
address=$def_address
addressother=$def_addressother
title=$def_title
tag=$def_tag
notebook=$def_notebook

# check evernote setting
if [ -f ~/.evetnote ];then
addresstmp=`grep ADDRESS ~/.evetnote|cut -d= -f2`
  addressothertmp=`grep ADDRESSOTHER ~/.evetnote|cut -d= -f2`
  if [ "$addresstmp" != "" ];then
address=$addresstmp
  fi
if [ "$addressothertmp" != "" ];then
addressother=$addressothertmp
  fi
fi

# help
HELP="Usage: $0 [-uh] [-f <input file>] [-a <email address>]
[-o <other mail address>] [-t <title>] [-T <tag>]
[-n <notebook>] message...
Arguments:
-u Send an input file as attachment
(default: file's content is sent as an inline text)
-f Set an input file, in which the contents is sent
(default: ${def_inputfile})
-a Set an email adress (default: ${def_address})
-o Set other email adress for check (default: ${def_addressother})
-t Set a title (default: ${def_title} or inputFile if available)
-T Set a tag (default: ${def_tag} ) + email (always added)
To put multiple tags, use like -T \"#tag1 #tag2 #tag3\"
-n Set a notebook (default: ${def_notebook} )
-h Print Help (this message) and exit
message Be sent as a message
Setting file:
~/.evetnote
[email protected]
[email protected]
ADRESS for evernote is mandatory.
Please specify it in .evernote or use -a.
Note: 50 mails can be sent as a standard user.
250 mails can be sent as a premium user.
"

# check arguments
if [ $# -eq 0 ];then
echo "$HELP" 1>&2
  exit
fi

OPTNUM=0
while getopts uf:a:o:t:T:n:h OPT;do
  OPTNUM=`expr $OPTNUM + 1`
  case $OPT in
    "u" ) attach=true ;;
    "f" ) inputfile="$OPTARG" ;;
    "a" ) address="$OPTARG" ;;
    "o" ) addressother="$OPTARG" ;;
    "t" ) title="$OPTARG" ;;
    "T" ) tag="$OPTARG" ;;
    "n" ) notebook="$OPTARG" ;;
    "h" ) echo "$HELP" 1>&2; exit ;;
    * ) echo "$HELP" 1>&2; exit ;;
  esac
done
shift $(($OPTIND - 1))

# Check address
if [ "$address" = "" ];then
echo "$HELP" 1>&2
  exit
fi
if [ "$addressother" != "" ];then
address=${address},${addressother}
fi

# Set title if necessary
message="$*"
if [ "$title" = "$def_title" ] && [ "$inputfile" != "" ];then
title=$inputfile
fi

# Tag check
tagCheck=`echo "$tag"|cut -c1`
if [ "$tag" != "" ] && [ "$tagCheck" != "$TAGMARK" ];then
tag="$TAGMARK""$tag"
fi
tag="$tag #email"

# Notebook check
notebookCheck=`echo "$notebook"|cut -c1`
if [ "$notebook" != "" ] && [ "$notebookCheck" != "$NOTEBOOKMARK" ];then
notebook="$NOTEBOOKMARK""$notebook"
fi

# Check input file and send message
if $attach;then
if [ "$inputfile" != "" ];then
    (echo $message;uuencode $inputfile `basename $inputfile`)|mail -s "$title $notebook $tag" $address
  else
    (echo $message)|mail -s "$title $notebook $tag" $address
  fi
else
if [ "$inputfile" != "" ];then
    (echo $message;cat $inputfile)|mail -s "$title $notebook $tag" $address
  else
    (echo $message)|mail -s "$title $notebook $tag" $address
  fi
fi

やってることは簡単で、単にmailコマンドでEvernoteへの登録用メールアドレスにメールを 送っているだけです。

使い方

まず、メールを送るためにmailコマンドでメールを送れる様になっていないといけません。 下にMac(Lion)で自分でやった設定について載せておきますので、 必要であれば設定して下さい。

メールの設定が済んだら自分のEvernoteのアカウントでノートを送る用のメールアドレス を調べます。 Webなら設定アカウントの概要に、 Macのアプリならアカウント情報に書いてあります。 (username.XXX.m.evernote.comの様なアドレスです。)

次にホームディレクトリに

.evernote

と言った内容の.evernoteと言うファイルを作ります。 ADDRESSは先程調べたEvernoteのアドレス、 ADDRESSOTHERの方は必須ではないですが、 メール送信を確認するために送る適当な自分のアドレスなので 必要であれば設定して下さい。 これらのアドレスはスクリプトの引数でも設定出来ます。

出来る事は

  • メモしたいことをそのまま送る
  • ファイルの内容をテキストとして送る
  • ファイルそのものを添付して送る

と言った感じで、以下のオプションを使って送ります

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Usage: evernote.sh [-uh] [-f <input file>] [-a <email address>]
                [-o <other mail address>] [-t <title>] [-T <tag>]
                [-n <notebook>] message...

Arguments:
      -u  ファイルを添付ファイルとして送る
          (このオプションを指定しないとファイルの内容がテキストで送られる)
      -f  送りたいファイルの指定(メモだけ送りたい時は指定しなくてもOK)
      -a  Evernoteアドレスを設定(.evernoteで指定してないとき、別のノートに送りたいとき)
      -o  確認用メールアドレスの設定(同上)
      -t  ノートのタイトル (default: By email またはファイルの指定がある時はファイル名)
      -T タグの指定(defaultで"email"タグは常に付く。
          複数のタグを指定する時は'-T "#tag1 #tag2 #tag3"'と言った感じで
          #をそれぞれに付けて指定。
      -n  ノートブックの指定
      -h  ヘルプの表示

 message  以降の引数以外の部分はノートの内容となる

注意として、Evernoteでは無料会員だと1日50通まで、 プレミアムでも250通までしかメールで送れないので、 ひと月の容量制限を超えなくても1日に大量のメールは送れません。

最初にスクリプトを作った時片っ端から設定ファイルなどを送っていたら 何故か途中から送れなくなって困ったので、一応。

Macでmailコマンドを使う

簡単なのはGmailのSMTPサーバーを経由して送る方法です。 他のSMTPサーバーを使いたい場合は適宣変更して下さい。

まず、認証ファイルを作るために /etc/postfix/gmail_passwdと言うファイルを以下の様な内容で作ります。 (以下の作業はrootで)

smtp.gmail.com:587 [email protected]:password

userpasswordを自分のものにして下さい。

次に、ここからデータベースファイルを次の様にして作ります。

$ postmap /etc/postfix/gmail_passwd

gmail_passwd.dbと言うファイルが作成されたのを確認したら 元のパスワードがそのまま書かれているgmail_passwdは削除して下さい。

次に、/etc/postfix/main.cfに次のような設定を追加します。

#Relay host
relayhost = smtp.gmail.com:587

#SASL authentication
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail_passwd
smtp_sasl_security_options = noanonymous

#TLS setting
smtp_use_tls = yes
smtp_tls_security_level = encrypt
tls_random_source = dev:/dev/urandom

設定が終わったら

$ postfix reload

で設定を反映させます。

まとめ

Evernoteは様々なアプリなんかからも直接送れる様になってますし、 IFTTTを使えば、 殆どの環境から簡単にノートに入れていく事が出来るようになります。

一方でノートを公開する方法も単に共有、として公開URLを送る公式の方法以外にも、 EverWiki: https://www.everwiki.net/ といったものや Postach.ioと言ったEvernoteのノートをそのままブログ にしてしまうサービスも出て来ています。

探してみると思った以上に色々な物がありました。

Evernote自体も進化しているようで、丁度今日アップデートがあったみたいで、 リマインダー機能が追加されたようです 3 。 アプリをアップデートすると今までの情報を表示したりする右上のボタン群に 時計が追加されていて、指定日に知らせを出してくれるようです。 デフォルトではメールにもその日の午前中に送ってくれるようになっています。

まだ、日付だけで、時間帯指定とかまでは出来ないみたいですが、 メモとスケジューリングが一緒に出来て便利だと思うので、 よく使われる様になったら要望が出て時間帯指定まですぐ出来るようにしてくれるんじゃないかな?と期待しています。

Sponsored Links
  1. Evernote WebクリッパーClearlyと言う2つのアドオンがあります。 Webクリッパーの方はページの記事の部分のみ、全体、リンクのみ、と言った形で 選択的にクリップ出来ます。ページの一部を選択して選択部分のみを クリップすることも可能です。 Clearlyの方はページを記事部分を中心に読みやすくして余計な情報を落とした状態に 変換してくれてから登録出来る様になります。 基本的にはWebクリップで記事のみ、の選択でためしてみて、上手く行かないときは Clearlyを使う、と言った感じで使っています。 それでも上手く行かないようなときはもう一度Webクリッパーに戻って 自分で選択してみるか、ページ全体をクリップしてしまったりしています。

  2. 以前、iPod touchで使ってた時にお気に入りに入れてもキャッシュが 残ってるだけで、他で容量を使うと消えてしまって結局オフラインで見れなくなる、 と言った気がしたんですが、今使っているiPhoneだとお気に入りに入れておいた 物がオフラインで見れなくなることはなくなりました。 公式ページにその辺の事書いてなくて、英語の公式ページでも探してもその辺 ちゃんと記述してある所が無かったのですが、Evernote Japanの公式Twitterがオフラインでも見れるよ、というAppBankの記事をツイートしてる(何故わざわざ外の記事をツイートしてるかがちょっとあれですが…) ので少なくとも今はそういう機能になっているんだと思います。

  3. Evernote Reminders Now Available On Mac, iOS & The Web

Sponsored Links

« OctopressのIndexページの変更 コマンドラインでの文字化け解決?: '\M-c'とは... »

}