H.M.F.B AppleScript.



どもども、、オヒサの更新です、、汗。
今回はテキスト(text,string)を扱うスクリプトを紹介しますね、今までの中でも使ってる物もあるのである程度は理解されていると思いますのでそれをモノにしちゃいましょー♪

今度デジカメ買うんだ−♪ ←まったく関係ない。


と、タイトルの通りです、、タブ区切りやカンマ区切り、またその他の物で文章を区切ったはよいが、AppleScriptで制御出来ない、、なんて事ありませんか?

例えば、「あいうえお,かきくけこ,さしすせそ,たちつてと」の「かきくけこ」が欲しいならば

 word 2 of "あいうえお,かきくけこ,さしすせそ,たちつてと"

で良い、しかし、wordは、実際には上記例でいう「,(カンマ)」で見分けているわけではなく
ひらがな、かたかな、英語、数字、漢字 などを見分けているだけに過ぎない

つまり、「aiうえお,かき01こ,さしすseso,経ちつてと」の「かき01こ」を抜き出す事は出来ないということ、「かき01こ」の部分は、

 set Word_1 to word 2 of "aiうえお,かき01こ,さしすseso,経ちつてと"
 set Word_2 to word 3 of "aiうえお,かき01こ,さしすseso,経ちつてと"
 set Word_3 to word 4 of "aiうえお,かき01こ,さしすseso,経ちつてと"
 Word_1 & Word_2 & Word_3 --"かき01こ"

ということだからだ、

今回はstringクラスの属性word,text,characterなどでは、指定できない区切り方を紹介する。とっても便利なので使いだしたらとまらない、、ってなってます、、僕、、笑

000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015






set begin_delimi to text item delimiters of AppleScript
try
  set text item delimiters of AppleScript to "," --カンマ
  set my_text to read (choose file with prompt "テストファイル" of type "TEXT")
  --上記は set my_text to "aiうえお,かき012,さしす背素,TAちつてと" でもOKです
  set text_Cont to ""
  repeat with i from 1 to (count text item of my_text)
    set my_item to text item i of my_text
    set text_Cont to text_Cont & "項目" & i & ":" & my_item & return
  end repeat
end try
set text item delimiters of AppleScript to begin_delimi

text_Cont


さて、上記スクリプトには、読み込むテキストファイルが必要なので、SimpleTextなどでデスクトップにでも「テストファイル」を作成してください内容は、

 aiうえお,かき012,さしす背素,TAちつてと

↑です、別にどういう内容でも構いませんがカンマで区切るようにしてください。

スクリプトを書くのが面倒な方はこちらをD/L→ 024-textitem.sit




これは、AppleScriptクラスのtext item delimiter 要するにtextで指定した時の区切りを指定するものですね

 text item delimiter of AppleScript
を実行すると通常は、{""}というのを返してきます、ようするに、

 set my_text to {"あいうえお", "かきくけこ"}
 text item 2 of my_text

上記を実行すると、"かきくけこ"が返ってきます。 リスト内の ""←これを区切りとしているからですね、つーことで、この text item delimiter of AppleScriptを違うものに指定しているのが、上記の例文でいう003行目となっています。

001行目 set begin_delimi to text item delimiters of AppleScript

ここでは、text item delimiters of AppleScriptの初期値を求めそれを begin_delim変数に代入しています、何故こんな事をするかというと、text item delimiters は変更後、再起動するか指定し直さない限り値が変わらないからです。

002行目〜011行目 tryend try

これは、003から010行間にエラーがあった場合にも012行目のスクリプトを実行しなくてはならないのでtry〜end tryで囲ってあります。 実行するスクリプトがこれだけなら問題ないのですが、他のスクリプト環境に影響があっては困るからです。

003行目 set text item delimiters of AppleScript to "," --カンマ

text item delimiters of AppleScript の値を{""}から , カンマへと置き換えています、これで今までリスト内のtext item を区分けるのではなく、カンマ区切りを数えられるようになります。 どんな数値でも構わないのですが、文章内で多様されないカンマや、:←区切り文字、タブなどを指定するようにするのが良いと思います、、(別に"あ"とかでもOK!)
先ほども書きましたが、これは再起動されるまで有効ですので使用したらすぐに元の値へ戻すのが望ましいと思います。特に文章内でtext item (数値)を指定している時は問題となりますので注意してください

もう一回いいますが、初期値は {""} です、お忘れなく。

004行目 set my_text to read (choose file with prompt "テストファイル" of type "TEXT")

my_textに、カンマ区切りのテキストを読み込ませるならばどういう書き方でも構いませんがreadを忘れないように書いてみました(笑)
004行目は set my_text to "aiうえお,かき012,さしす背素,TAちつてと"
としても全然OKです。

007行目からの、、、
  set text_Cont to ""
  repeat with i from 1 to (count text item of my_text)
    set my_item to text item i of my_text
    set text_Cont to text_Cont & "項目" & i & ":" & my_item & return
  end repeat

ここで処理している内容は、カンマ区切りの文字列を
項目1:なになに
項目2:なになに
、、、、
としています、repeatや&は以前にも散々やったと思いますので省略します。

ちなみに実行結果は結果ウィンドウで確認してください。
"項目1:aiうえお
項目2:かき012
項目3:さしす背素
項目4:TAちつてと
"
となるのが正解です。はい。

012行目 set text item delimiters of AppleScript to begin_delimi

text item delimiters の値が カンマだと後々こまるかもしれないので、001行目でとった初期値に戻してあげました。

以上です、



あ、、ごめん、、今回もうおわりなのさ、、(笑)
うーんと、なんかだって、もう説明する事が少なくなってきたような気が、、笑

もうそろそろ、アプリケーションをアップルスクリプトで操作する方に移りたいんだけどうーん、あと何か必要かなぁ、、? メールソフトは皆何を使ってるのかなぁ、、とか、結構思ってます、、やっぱりアウトルックエキスプレスを使ってるかたが多いのかなぁ、、?

と、まぁ、色々考えてまた更新していきたいと思ってますのでよろしくです。 なんか最近更新がおくれてすまないです、、ではでは、JinJinでしたまたですー(^o^)/~~~



(c)HandyMacForBeginner's