ジャムスタ

just another mind Style

繰り返しで検索結果のノート内容を全て取得する[AppleScript][Evernote]

前回は検索結果のノートの内容を取得するところまでやりました。

 

set note1 to find notes "notebook:inbox"

set text1 to HTML content of item 1 of note1

 

二つ目の文のitem 1 の所を、2,3,4…と増やしていけば、検索結果のノートの内容全てにアクセスできます。

 

で、そういう時はrepeat。いろいろ構文があるようですが、リストを扱うときに便利なのが

 

    repeat with i in list1
    end repeat

 

という感じのもの。変数iに、リストの内容を順番に突っ込んでいってくれます。おそらくリストの最後の要素までたどり着けば終了、という構文なのでしょう。

今のところ、順番は気にしていませんので、この構文を使ってみます。

 

set text2 to ""

set note1 to find notes "notebook:inbox"

    repeat with i in note1
        set text1 to HTML content of i
        set text2 to text2 & text1
    end repeat

 

多少形が変わっていることに注意してください。

iにはリストの要素が代入されますので、

 

item i of note1

 

だとエラーになります(なりました)。

ようは一回目のループが回っているときは

 

i = item 1 of note1

 

二回目のループの時は

 

i = item 2 of note1

 

という風にiの中身はなっているわけです。だから「HTML content of i」という記述でその中身を取り出せます。

 

  set text2 to text2 & text1

 

は他にもっとクールな書き方があるのかもしれませんが、とりあえずとして。

 

text2という大きな箱を準備し、そこにtext1の内容をループごとに追記していきます。

 

で、最終的に全てのノートの要素がtext2に入る、というわけですね。これはまあ、リストに保存したほうがいいのかもしれません。後の方の処理がよくわかっていないので、とりあえずこの方法にしておきます。

 

しかし、単純にこのやり方だと、<HTML>や<BODY>が一つの箱に複数入ることになってしまいます。次はその改善。

 

あと、検索結果が空だったときの条件分岐も必要ですね。それもまた今度。