Evernoteに英単語・フレーズ帳をつくる
Evernoteに英単語・フレーズ帳をつくる
Evernoteのノートを英単語帳として使える素晴らしいアプリ(Everword)を見つけたので、GASでスプレッドシートからノートを追加できるようにしてみます。
目次[非表示]
準備
Evernote転送用メールアドレスを確認
Evernoteには、メールでノートを追加できる機能があります。
このときに使用する送信先が、Evernote転送用メールアドレスです(Web版からも確認することができます)。
Evernote転送用メールアドレスは、
アカウント設定 -> アカウント概要 -> メールの転送先
に記載されています。
ノートの構成を検討
Everwordでは、ノートのタイトルが「問題」、ノートの内容が「回答」として扱われます。
勉強に使うことを考えると、
- 問題:覚えたい単語やフレーズ
- 回答
- 単語やフレーズの和訳
- 使われている単語・イディオムの辞書的な意味
- 解説やその他の説明
- 出典(本やアニメなどのタイトル)
あたりが入っていればよさそうです。
スプレッドシート作成
こんな感じのスプレッドシートを作ります。
※ここでは、辞書サイトとしてWeblio辞書を利用させていただきます。
- 1-2行目:各種設定
- 保存先ノートブックを設定
- 出典を設定
- 使用する辞書サイトを設定
- 3行目~:ノートの内容と辞書サイトから単語・熟語を取得
- ノートの内容
- A列:覚えたい単語やフレーズ
- B列:単語やフレーズの和訳
- C列:使われている単語・イディオムの辞書的な意味(F列からコピペ)
- D列:解説やその他の説明
- 辞書サイトから単語・熟語を取得
- E列:調べたい単語・イディオム
- F列:辞書サイトでの検索結果まとめ
- G列~:辞書サイトを使うためのデータ列
- ノートの内容
シートの利用イメージ
シートはこんな感じで使う想定です。
- 本やアニメ等を見て、覚えたい単語・フレーズをA列に、日本語をB列に書く
- フレーズの中から、さらに辞書サイトで意味を調べたい内容をE列に書く
- F列に辞書サイトの検索結果が表示されるので、それをC列にコピーする
- その他、気になることを調べたりしてD列に記入する
- 1-4を繰り返す
- 最後にGASを実行して、Evernoteにノートを送信する
保存先ノートブックを設定(1行目A,B列)
Everwordでは指定したノートブックからノートが読み込まれます。
そこで、予めノートブックを指定してノート作成できるようにしておきます。
Evernoteのヘルプによると、メール送信時のタイトルに@[ノートブック名]
と入れておけばよいようです。
出典を設定(2行目A,B列)
出典を記載します。
辞書サイトを設定(1行目C,D列)
ここでは、Weblio辞書を使用するため、以下を設定します。
https://ejje.weblio.jp/content/
辞書サイトを使うためのデータ列を設定(G列~)
G列以後には、E列に記載された調べたい単語・イディオムを辞書サイトで検索、結果を取得するためのデータ列を設定します。
検索用URLを作成(G, H列)
今回利用するWeblio辞書では、1単語からなる場合は
https://ejje.weblio.jp/content/beef
複数単語からなる場合は
https://ejje.weblio.jp/content/bell+pepper
のように、単語と単語の間を+
で接続したURLが使われます。
そこで、E列に記入された単語・イディオムのスペースを+
に置換した文字列をG列に、設定した辞書サイトと結合した検索用URLをH列に設定します。
スペースを+
に置換する(G列)
文字列の置換には、substitute関数を使用します。
E列の5行目にある文字列を置換する場合、以下のように設定します。
=substitute(E5, " ", "+")
検索用URLを設定(H列)
置換後の文字列(G列)と辞書サイトのURL(D1)を結合して、検索用URLを設定します。
文字列同士を&
で結合すればOKです。
=$D$1&G5
単語・イディオムの意味を取得(I列)
検索用URLのページから単語・イディオムの意味を取得するには、importxml関数を使用します。
H列の5行目にあるURLのページから意味を取得する場合、以下のように設定します。
=importxml(H5, "//*[@id='summary']/div[2]/table/tbody/tr/td[2]")
※importxml関数の第2引数は、XPathを指定します。
この値は、Chromeでページを開いた上で右クリック->検証
とし、意味が表示されている部分でさらに右クリック->Copy->Copy XPath
を辿ることで取得できます(@id="summary"
の部分はダブルクォートとして取得されますが、上記の式ではシングルクォートに置き換えています)。
Weblio辞書は、単に意味だけでなく、そのコアとなるイメージや詳細な解説文が掲載されている単語もあります。
それらは異なるXPathを持ちますので、必要であればJ列以後に取得するための設定を追加してください。
単語と検索結果をまとめる(F列)
E列の検索対象と、I列の単語・イディオムの意味をまとめます。
セル内での改行は、char(10)
でできます。
=E5 & char(10) & I5
GAS作成
スプレッドシートの5行目以下にある1行(A~D列)を1つのノートにします。
function myFunction() {
// Evernoteの転送アドレス
var DEST_ADR = "Evernote転送用メールアドレス";
// シートを取得
var sheet = SpreadsheetApp.getActiveSheet();
// タスク範囲を取得
var items_array = sheet.getDataRange().getValues();
// アイテム数だけ繰り返し
var notebook = items_array[0][1];
var series_episode = items_array[1][1];
for (var i = 0; i < items_array.length; i++) {
// 先頭はタイトル行なので何もしない
if (i <= 3) {
continue;
}
// ノート情報を作成
var eng_string = items_array[i][0];
var jpn_string = items_array[i][1];
var word = items_array[i][2];
var other = items_array[i][3];
// タイトルがなければ何もしない
if (eng_string == '') {
continue;
}
// 保存先ノートブック情報を付与
eng_string += " " + notebook;
// ノート情報を集約
var card_back = jpn_string;
if (word != '') {
card_back += '\n\n' + word;
}
if (other != '') {
card_back += '\n\n' + other;
}
if (series_episode != '') {
card_back += '\n\n' + series_episode;
}
// ノートをメール送信
MailApp.sendEmail(DEST_ADR, eng_string, card_back);
}
}
実行結果
このようなノートがEvernoteに作成されました。
変に改行が入っていたり、そもそもWeblio辞書からの解説取得に失敗したりすることがありますが、そこは今のところ運用でカバーしています・・・
Written with StackEdit.
コメント
コメントを投稿