ラベル AppleScript の投稿を表示しています。 すべての投稿を表示
ラベル AppleScript の投稿を表示しています。 すべての投稿を表示

2011/10/07

楽しいAppleScript

# このタイトルはトーゼン「楽しいRuby」にかぶせています。

makiaea.org | wifi power toggle using applescript in mac os x 10.7 lion
を目にして衝動的に久方ぶりに AppleScript Editor.app を起動してしまいました。
すっかり記憶喪失になっていたので
以前作った github.com/midore/readbook-scpt を開いて書き方を思い出しました。

実は普段は
~/.bashrc に

alias 'wifi'='/usr/sbin/networksetup -setairportpower en0'

を追加していて
$ wifi on
などして使っているんですが...それはそれとして
この主題は面白いです。

その昔、梅棹忠夫氏は
将来は誰でもが気軽にプログラミングする時代がくるんじゃないか、と言ったとか言わなかったとか。
# 原典が何だったか思い出せない。*1
そんなことを心の片隅におきつつ...

# wi-fi.scpt
script wifi

  on my_dialog(title, str, b_str, b_no)
    tell application "Finder"
      activate
      display dialog str buttons b_str default button b_no with title title
      set res to button returned of result
      return res
    end tell
  end my_dialog

  on setpower(onoff)
    return do shell script "networksetup -setairportpower en0" & space & onoff
  end setpower

  on getpower()
    return do shell script "networksetup -getairportpower en0"
  end getpower

  on getinfo(opt)
    return do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" & space & opt
  end getinfo

  on endinfo()
    return my_dialog("Wi-Fi Info", getinfo("-I"), {"Done"}, 1)
  end endinfo

end script

on run
  tell wifi
    set v to do shell script "networksetup -version"
    # networksetup, Version 1.8
    # Copyright 2002-2010 Apple Inc. All rights reserved.
    set str to word 5 of getpower()
    if str is "On" then
      set msg to {"Off", "GetInfo", "Cancel"}
    else
      set msg to {"On", "Cancel"}
    end if
    try
      set res to my_dialog("Wi-Fi", v & return & return & "Wi-Fi Power (en0): " & str, msg, 1)
      if res is "GetInfo" then
        return endinfo()
      end if
      setpower(res)
      my_dialog("Wi-Fi", getpower(), {"OK"}, 1)
    on error number -128
      return
    end try
  end tell

end run

きりがないのでここらあたりで完成。

*1
あったあった。
出典『知的生産の技術』岩波新書
P.15

ややさきばしったいいかたになるかもしれないが、わたしは、たとえばコンピューターのプログラムのかきかたなどが、個人としてのもっとも基礎的な技能となる日が、意外にはやくくるのではないかとかんがえている。すでにアメリカでは、初等教育においてコンピューターの言語FORTRANをおしえることがはじまったようだ。

この本の初版は1969年7月21日。
梅棹氏は、プログラミングが「個人としてのもっとも基礎的な技能」になると書かれていますので、私が記憶していたこととは微妙に異なりますな。

それにしても「個人としてのもっとも基礎的な技能」としてのプログラミングとは?

特に言語指定はしないが日本語の読み書き&会話ができることと等しくプログラミングソースを読み書き&実行できる技能、
...と解釈したとして...
では、いま、この日本で、梅棹氏の予想は現実のものとなっているか? というと...幸か不幸か? No かもしれません。
けれどこれまた幸か不幸か?
こんな私でも「易しい」ものを読んだり書いたりできているのだからある意味 Yes なのかもしれません。

これからもっとプログラミングが普及して、梅棹氏の言ったような基礎的な技能となる日はくるんだろうか。もしそんな日がくるならば AppleScript も楽しい言語の1つとして普及してほしいなーと思います。

Steve Jobs 氏を悼み「ヒッピーに捧ぐ」を聞こう。

-- screen shot

2010/02/22

UTF8-MAC

ここを読んで

私も perl でためしてみました。
% cat test.pl

#!/usr/bin/perl
while(<>) {
    chop;
    print "Making a folder $_...\n";
    mkdir();
}

% cat 02.txt

ABC_a'bc 織田 信長
ABC_e'fg 豊臣 秀吉
ふげふが リファレンス& ドロー


% ./test.pl 02.txt
Making a folder ABC_a'bc 織田 信長...
Making a folder ABC_e'fg 豊臣 秀吉...
Making a folder ふげふが リファレンス& ドロー...

わざと\s や ' や濁点や & を入れてみましたがちゃんとおかしな名前のフォルダが出来上がりました。

で、Ruby ではどうなのでしょ。
% cat test.rb

#!/path/to/ruby19
# coding: utf-8
ARGF.each{|line|
  system ("mkdir #{line}")
}


% ./test.rb 02.txt

% ./test.rb 02.txt 
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: ドロー: command not found

こうなるのは予測していたので

http://gihyo.jp/dev/serial/01/ruby/0004?page=2 を読み直し

#!/path/to/ruby19
# coding: utf-8
require 'nkf'
ARGF.each{|line|
  ustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', line)
  system ("mkdir #{ustr}")
}

nkf を使ってみました。が、最初と同じエラーが現れ ふげふが/ リファレンス/ の2のフォルダができました。

結果をみると \s のところでパスが区切られてしまったようなので
gustr = ustr.gsub(/\s/, "\\ ")
を挟んでみたものの ”&” でまたパスを区切られてしまいました。結局エラーになりそうな文字(て何?)を全て gsub しないとだめなのかもしれません。いやいやそんなことじゃなく正しい指定(nkf の)さえ分かればいいだけのことなのかもしれません。
あーわからない。

このままで話が終わるのはなんだか後味が悪いので AppleScript で Ruby を呼んでみました。

tell application "Finder"
  activate
  set cf to choose file with prompt "読み込みたいテキストファイル_UTF-8_を選択してください。"
  set dst to choose folder with prompt "保存先フォルダを選択してください。"
  set f to quoted form of POSIX path of cf
  set rubyfile to quoted form of POSIX path of (((folder of file cf) as text) & "ioread.rb")
  # ---------------------------
  try
    set str to do shell script "/usr/bin/ruby" & space & rubyfile & space & f
    set ary to paragraphs of str
    if (count of ary) > 3 then # this line
      return display dialog "体力の限界です。" buttons {"OK"} default button 1 with title "Oh, NO "
    end if
    repeat with fname in ary
      make new folder at (dst) with properties {name:fname}
    end repeat
  on error error_str
    display dialog error_str buttons {"OK"} default button 1 with title "Error"
  end try
end tell
# return AppleScript's version => "2.1.1"

% cat ioread.rb 
#!/usr/bin/ruby
f = ARGV[0]
print nil unless f
ary = IO.readlines(f)
ary.delete("\n")
print ary

% ls -F
ABC_a'bc 織田 信長/                                  ふげふが リファレンス& ドロー/
ABC_e'fg 豊臣 秀吉/


ちゃんとおかしな名前のフォルダができました。
テストなんでフォルダの数は3つまでに制限かけておきました。# this line のところ。


+++ 追記 +++
2010-02-22
しばらくしたら思いつきました。文字ごとに gsub してみようと。

% cat 02.txt

ABC_&a'bc 織田 信長
ABC_e'fg 豊臣 秀吉
ふげふが リファレンス& ドロー


test.rb

  1 #!/path/to/ruby19
  2 # coding: utf-8
  3 
  4 require 'nkf'
  5 def ex(line)
  6   mu = String.new("")
  7   ary = line.each_char{|x|
  8     gx = x.gsub(
  9       /[\s\'\(\)\+\!\&\,\[\]\;]/,
 10       " "=>"\\ ", "'"=>"\\'",
 11       "("=>"\\(", ")"=>"\\)",
 12       "+"=>"\\+", "!"=>"\\!",
 13       "&"=>"\\&", "."=>"\\.",
 14       "ï"=>"\\i", ","=>"\\,",
 15       "["=>"\\[", "]"=>"\\]",
 16       ";"=>"\\;"
 17     ) 
 18     mu << gx
 19   } 
 20   p macustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', mu)
 21   p macustr.encoding
 22   system ("mkdir #{macustr}")
 23 end
 24 
 25 ARGF.each{|line| ex(line)}


% ./test.rb 02.txt

"ABC_\\&a\\'bc\\ 織田\\ 信長"
#<Encoding:UTF8-MAC>
"ABC_e\\'fg\\ 豊臣\\ 秀吉"
#<Encoding:UTF8-MAC>
"ふげふが\\ リファレンス\\&\\ ドロー"
#<Encoding:UTF8-MAC>


% ls -F

02.txt                                               test.rb*
ABC_&a'bc 織田 信長/                                 ふげふが リファレンス& ドロー/
ABC_e'fg 豊臣 秀吉/


line 10 "'" を "\\'" とスラッシュバックスラッシュ2つにしてみたらうまくいった。それがなぜなのかは分かっていない。
こういうのは力技と呼ばれることなんだろう。

UTF8-MAC [2] へ続く


[2011-02-19]

2010-02 時点での敗因はただ単にchomp しわすれとsystem コマンド発行する引数を'' で囲まなかったこと。それだけ。びっくりする愚かなおち。
nkf とかね関係ありません...。
それにしても今読み返してつくづく...単純ミスから泥沼していく様は自分でもあきれました。

% cat a.txt
ふげふが &どろー
% cat test.rb
# coding: utf-8

ARGF.each{|x|
  s =  "\'#{x.strip}\'"
  p sh = system("mkdir #{s}")
}
% ruby -v test.rb a.txt
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
true
% ls
a.txt                            test.rb                          ふげふが &どろー


ruby 1.9.2
でも同様の結果。

2010/02/16

Remove resource fork in AppleScript

私は Twitter に参加していませんが何日か前に Google Reader で
急募: OS XのiTunesから、mp3ファイルを_リソースフォークなしに...
を見かけました。

早速 AppleScript で try

tell application "Finder"
  set src to quoted form of POSIX path of (choose folder)
  set dst to quoted form of POSIX path of (choose folder)
  set str to "ditto -v --norsrc  " & src & "  " & dst
  do shell script str
end tell

日本語名のフォルダを指定しても大丈夫でした。でもこれだけだと愛想がないのでいろいろ付け足し。

# remove-resource-forlk.scpt
tell application "Finder"
  # フォルダを選択
  set src to quoted form of POSIX path of (choose folder with prompt "リソースフォークをまるっと取り除きたいフォルダを選択してください。")
  # 保存先フォルダの選択
  set dst to quoted form of POSIX path of (choose folder with prompt "保存先であるフォルダを選択してください。")
  # コマンド文字列
  set str to "ditto -v --norsrc  " & src & "  " & dst
  if src is dst then
    set err_str to "指定したフォルダと保存先であるフォルダが同じです!異なるフォルダを選択してください。"
    display dialog err_str buttons {"OK"} default button 1 with icon 2 with title "Error"
    return
  end if
  set warn_str to "多くのファイルが含まれているフォルダを選択した場合時間がかかる(数分)場合があります。よろしいですか?"
  display dialog warn_str buttons {"OK", "Cancel"} default button 2 with icon 2 with title "Warning"
  try
  # コマンドの実行
  set res to do shell script str
  on error num
    display dialog "エラーが発生しました。" buttons {"OK"} default button 1
    return
  end try
  if res is "" then display dialog "おわりました。" buttons {"OK"} default button 1 with icon 1 with title "Success"
end tell


[用途]
フォルダに含まれるファイルからリソースフォークを削除したファイルを保存先フォルダに保存します。(もとのファイル名は維持されます。)
複数のフォルダを内包しているフォルダを指定した場合、保存先フォルダの階層は、もとのフォルダの階層を維持します。

# iTunes Music フォルダにあるミュージシャン(Artist) の名前がついたフォルダを選択すると、そこに含まれるアルバム名のついたフォルダにある音楽ファイル( 末尾に.m4a .mp3 などの名前のついたファイル)から、リソースフォークを削除したものを、保存先フォルダに保存します。
# ターミナルからコマンドを叩くことなく、操作できます。

[使い方]
Finder メニュ-> 移動-> アプリケーションを開く (Command + Shift + A でApplication フォルダ を表示)
->ユーティリティ ->AppleScript Editor.app(AppleScript エディタ.app) をダブルクリックで起動し新しいファイルを作り上記をコピー and ペーストします。

1, コマンドKey(⌘) + K でコンパイルします。
2, コマンドKey(⌘) + S で File 保存(必ずスクリプト として)
3, コマンドKey(⌘) + R で実行 です。

処理がおわると『おわりました。』と表示します。エラーが発生した場合は『エラーが発生しました。』と表示します。

複数のアルバムフォルダが含まれている ミュージシャン(Artist) のフォルダなどを選択するとファイル数にして何百曲などのファイルを処理することになります。その場合ものすごく時間がかかる(数分)こともあります。なので最初は下記の手順でテストしてみてどのくらい時間がかかるものかを体感してみてください。

[テスト手順]
(1) デスクトップに2つ新規フォルダを作りそれぞれ「SRC」「DST」と名付けておく。
(2) 「SRC」フォルダの中にリソースフォークを取り除きたいフォルダを1 つだけコピーしておく。
  その際極力ファイル数の少ないフォルダを選ぶ。
「DST」フォルダは空っぽのままにしておく。
(3) 保存しておいた AppleScript ファイルを開いてから コマンドKey(⌘) + R をおす。または「実行」ボタンを押す。
「リソースフォークをまるっと...」ときかれたら「SRC」を選ぶ。
「保存先...」 ときかれたら 「DST」を選ぶ。

処理している間はなんのメッセージも表示しません。
10 枚程のファイルを処理した場合 2,3 秒でおわります。

# 注意1:
OS X 10.5x 時代のファイルにはリソースフォークがついてるけど、Snow Leopard 時代に作ったファイルにはついてません。

# 注意2:
指定フォルダとしてミュージシャン(Artist)名のついたフォルダを指定し
保存先フォルダには適当な名前(「test」とか)のフォルダを指定し実行した場合

iTunes->詳細->”iTunes Media”フォルダを整理する
にチェックをいれてから保存先フォルダ(「test」とか)を iTunes に取り込むと本来のミュージシャン(Artist)名のついたフォルダ名に自動変換されます。
(iTunes 9.03)

[ターミナルで確認]

# % ditto -h
# % xattr -h

# 指定フォルダ: test-src
# 保存先フォルダ: test-dst


指定フォルダ内

% ls -FRl test-src/
total 0
drwx------  3 foo  staff  102  2 15 16:35 Makana/
drwx------  3 foo  staff  102  2  4 11:48 平沢 進/

test-src//Makana:
total 0
drwx------  17 foo  staff  578  2 15 16:33 Different Game/

test-src//Makana/Different Game:
total 92824
-rw-------@ 1 foo  staff  4428672  6  6  2009 01 Away.m4p
-rw-------@ 1 foo  staff   623834  2  4 18:09 02 Interlude I.m4p
-rw-------@ 1 foo  staff  3821305  6  6  2009 03 Mars Declares.m4p
# ... 略

test-src//平沢 進:
total 0
drwx------  4 foo  staff  136  2  4 11:48 時空の水/

test-src//平沢 進/時空の水:
total 15344
-rw-------@ 1 foo  staff  4542192  4  4  2008 01 ハルディン・ホテル.m4p
-rw-------@ 1 foo  staff  3311160  4  4  2008 10 金星.m4p

% xattr -x test-src/Makana/Different\ Game/01\ Away.m4p 
# => com.apple.FinderInfo

% xattr -x test-src/平沢\ 進/時空の水/01\ ハルディン・ホテル.m4p
# => com.apple.FinderInfo


AppleScipt 実行後
保存先フォルダ内

% ls -FRl test-dst/
total 0
drwx------  3 foo  staff  102  2 15 16:35 Makana/
drwx------  3 foo  staff  102  2  4 11:48 平沢 進/

test-dst//Makana:
total 0
drwx------  17 foo  staff  578  2 15 16:33 Different Game/

test-dst//Makana/Different Game:
total 92824
-rw-------  1 foo  staff  4428672  6  6  2009 01 Away.m4p
-rw-------  1 foo  staff   623834  2  4 18:09 02 Interlude I.m4p
-rw-------  1 foo  staff  3821305  6  6  2009 03 Mars Declares.m4p
# ... 略

test-dst//平沢 進:
total 0
drwx------  4 foo  staff  136  2  4 11:48 時空の水/

test-dst//平沢 進/時空の水:
total 15344
-rw-------  1 foo  staff  4542192  4  4  2008 01 ハルディン・ホテル.m4p
-rw-------  1 foo  staff  3311160  4  4  2008 10 金星.m4p

% xattr -x test-dst/Makana/Different\ Game/01\ Away.m4p
# => 何もかえってこない。

% xattr -x test-dst/平沢\ 進/時空の水/01\ ハルディン・ホテル.m4p
# => 何もかえってこない。


[2010-02-16]
s/errr_str/err_str/g
s/warm_str/warn_str/g
s/やめる/Cancel/g
[2010-02-18]
s/folk/fork/g

2009/09/29

Snow Leopard creator code

なんですと。クリエータコードがなくなってる?
http://d.hatena.ne.jp/tanemori/20090914/SnowLeopardKillsDocumentCreatorCodes
http://www.tidbits.com/tb-issues/lang/jp/TidBITS-jp-994.html#lnk9

では早速、OS 10.6.1 で TextEdit.app を起動し適当に文字うってコマンド+S
GetFileInfo コマンドを使ってクリエイターがなくなっているかみてみた。

% GetFileInfo ~/Desktop/e.txt
file: "/Users/midore/Desktop/e.txt"
type: "\0\0\0\0"
creator: "\0\0\0\0"
attributes: avbstclinmedz
created: 09/29/2009 22:37:08
modified: 09/29/2009 22:37:08


たしかに creator も file type も0で埋まっている。以前だったらなにかしら名前が入っていたはず。
ということは?ーAppleScript からもみてみよう。

# 10.6.1 の AppleSciprt ヴァージョン
set a to AppleScript's version

# あいまいな記憶の中を漂いながら書いてるからちょっとおかしい...とりあえず
# 最後にとらえたファイルのクリエイタータイプ情報を結果表示できた。
tell application "Finder"
	activate
	set f to files of desktop
	repeat with i in f
		#set b to name of i
		#set c to properties of i
		set d to creator type of i
	end repeat
end tell
{a, d}

# =>
#{"2.1", missing value}


たしかに、missing value になっている。AppleScipt の Version もあがっている。

AppleScript Editor.appもいろいろ変わったみたい。
環境設定からタブ幅を指定できるようにもなってる。
でも、タブをスペースに変換はないのね。

2008/12/20

LANG of scpt

shoes2 を
http://shoooes.net/tutorial
ダウンロードしてとりあえずオセロなど動かしていたら思い出したこと。

astest.rb

#!/pathto/ruby191/bin/ruby
# -*- coding: utf-8 -*-

begin
  e = Encoding.default_external.name
  abort "Lang Error #{e}\n" unless e == "UTF-8"
rescue
  abort "ruby version Error\n"
end
print e


これを、ruby 1.9.1 (2008-10-28 revision 19983) [i386-darwin9.5.0] で実行すると

UTF-8

が返ってくる。この astest.rb に実行権限を与えてやり AppleScript から実行できるようにしておく。
今度は AppleScript から astest.rb を実行するためのスクリプト(myscpt.scpt)をつくり astest.rb と同じ階層に保存。

myscpt.scpt

# AppleScript's version "2.0.1". OS X 10.5.6 
# dir_base =>いまいる(このファイルの保存場所)ディレクトリの親ディレクトリ
tell application "Finder"	
  set dir_base to POSIX path of (folder of (folder of (path to me) as alias) as alias)
end tell
# dir_bin =>親ディレクトリ内 bin ディレクトリ
set dir_bin to dir_base & "bin/"
# コマンドテキスト生成
set comstr to "cd " & dir_bin & "; ./astest.rb"
# 発行
set res to do shell script comstr


これを実行するとなぜかエラーになる

AppleScript エラー
Lang Error US-ASCII


改めてターミナルで自分の今の環境変数を確認してみたけれど US-ASCII ではない。

% env |grep LANG
LANG=ja_JP.UTF-8


回避策はあるのだろうか?と考えた末...

# コマンドテキスト生成
#set comstr to "cd " & dir_bin & "; ./astest.rb"
set comstr to "export LANG='ja_JP.UTF-8';cd " & dir_bin & "; ./astest.rb"

結果

"UTF-8"

do shell script 中でLANG を設定してやればいいようだ。こんなことができるなんて初めて知った。

set comstr to "ENV"
set res to do shell script comstr

で、AppleScriptの環境変数をみることができた。どうやらここではまっていたようだ。。。

+++ memo +++
教訓:AppleScript が使う環境変数と自分の環境変数は異なる # OS X 10.5.6
ruby 1.9.x のものを AppleScript から実行してエラーが発生する時は encoding の問題かもしれないので注意が必要。と。

+++ 追記 +++
2009-01-27.
http://developer.apple.com/jp/technotes/tn2002/tn2065.html
http://developer.apple.com/qa/qa2001/qa1067.html
これらを読んでわかったこと. ENV LANG は

tell Application "Finder" ...
tell me ...

からは取得できない。

tell application "Finder"
  set lang to do shell script "ENV"
end tell
lang

これらが返す値に HOME, PATH, USER... などは含まれているものの肝心の LANG は含まれていない。

tell application "Terminal"
  set lang to do shell script "ENV"
end tell

には LANG は含まれている。
というこことから export しないで LANG 取得するにはこれが最短かなあ。

tell application "Terminal" to set lang to do shell script "ENV|grep LANG"
=>
"LANG=ja_JP.UTF-8"

でも、Terminal 起動させちゃうのはちょっと...

ちなみに
http://macscripter.net/viewtopic.php?id=24805
を読んで試したら

set SystemLanguage to do shell script "defaults read .GlobalPreferences AppleLanguages | tr -d [:space:] | cut -c2-3"
=>
"ja"

だけだった。

+++ さらに追記 +++
2009-01-29.

プログラミング Ruby
P41 を読んで
エンコーディング名を指定して ruby 1.9.1 を起動する方法がわかった

% cat as-test.rb
#!/path/to/ruby191/bin/ruby1.9 -E utf-8
# coding: utf-8
begin
  str = ARGV[0]
  if str
    puts str_e = str.encoding.name
    puts str_v = str.valid_encoding?
  end
  e = Encoding.default_external.name
  abort "Lang Error #{e}\n" unless e == "UTF-8"
rescue => err
  abort "Error.#{err}.\n"
end
print "ExtEncoding:#{e}\n"
print __ENCODING__, "\n"
% ./as-test.rb aa
=>
UTF-8
true
ExtEncoding:UTF-8
UTF-8


AppleScript からの呼び出しテスト
as-test.scpt をデスクトップに保存ー実行。

# as-test.scpt
tell application "Finder"
  display dialog "input" default answer "あいうえお"
  set str to text returned of result as text
  set path_file to POSIX path of (file "as-test.rb" of desktop as alias)
  set a to do shell script "./" & path_file & " " & str
  end tell
  a
=>
"UTF-8
true
ExtEncoding:UTF-8
UTF-8"


+++ memo +++

AppleScript ダイアログで受け取る文字列のエンコーディングは Ruby を通じて UTF-8 になっているのが確認できた。それでも、受け取る側の Ruby File ではその文字列をなにか処理する時には本当にUTF-8 か?とか valid か?をみるようにしておいたほうがいいのかも。

OS X 10.5.6
AppleScript's version "2.0.1"
Finder's version "10.5.8"

--imported_from
http://www.midore.net/daybook/2008/12/1229704901.html

2007/11/13

AppleScript Release Notes for Mac OS X version 10.5

AppleScript 2.0 についてのリリースノートがでていた。
http://developer.apple.com/releasenotes/AppleScript/RN-AppleScript/index.html

ユニコードを完全にサポートしました、だから at:'2007-11-16T00:10:16+09:00' サポート.
as text、as string、as Unicode text これら3つの結果は同じになるよ
とか、
コメントにシャープを使えるようになったから、#!/usr/bin/osascript と書けるよ
などなど掲載されてた。

んでは早速、シャープでコメント入れたりしてみる。3つが同じ結果かどうかも。

# なにもつけてない。
set jp to "そのままの日本語"
# as text。
set txt to "日本語 as text " as text
# as string。
set str to "日本語  as string" as string
# as Unicode text。
set ujp to "日本語 as Unicode text" as Unicode text
return {jp, txt, str, ujp}
=> {"そのままの日本語", "日本語 as text ", "日本語  as string", "日本語 as Unicode text"}


ディスプレイダイアログは?

#tell application "Finder"
# なにもつけてない。
set jp to "そのままの日本語"
display dialog jp buttons {jp}
#end tell
=>{button returned:"そのままの日本語"}


意地悪して tell app "finder" もとってみたけど、ディスプレイダイアログの文字列も文字化けしてないしボタンで選択した文字列も大丈夫.わー!ひょっとしてひょっとしてこのような書き方できるのってOS 9 以来なのでは?
...と思ったけれど、試し方としてはこれでいいか若干自信なし...あっ、文字によっては問題あるのかな。

is in も?

#tell application "Finder"
  display dialog "Select" buttons {"キャンセル", "foo", "日本語"} default button 1
  set ans to button returned of result
  return "日" is in ans
#end tell
=> true

大丈夫みたい。is in ってこうやって使うんだったっけ?自信なし

--imported_from
http://www.midore.net/daybook/2007/11/1194946629.html

2006/06/27

ひさびさにAppleScriptエディタ使った

By:“midore” at:2006/06/27(火曜) 13:10曇り

ぐるりさん,http://www.gururi.com/applescript /2006-06-21T010223.htm に触発されて私も考えてみたです。100以下の素数という条件なのでとても素直に考えてみたつもり。けど、seedに予めいれておくのはやっぱ反則なのかな???これダメな感じか?そんな気もしつつ...。

set seed to {2, 3, 5, 7}

repeat with targetnum from 2 to 100
my check(targetnum, seed)
end repeat
return seed

to check(targetnum, seed)

set checklist to {}
repeat with i in seed
set end of checklist to targetnum mod i
end repeat

if checklist does not contain 0 then
set end of seed to targetnum
end if

end check

=> {2, 3, 5, 7, 13, 11, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}

--imported_from
http://www.midore.net/daybook/2006/5-9/1151381435.html