おうちゃくん

アクセスカウンタ

zoom RSS FAX受信スクリプト本体(AppleScript)

<<   作成日時 : 2009/04/04 23:59   >>

ブログ気持玉 0 / トラックバック 1 / コメント 0

下記のAppleScriptをアプリケーションバンドル形式で保存します。

画像












-- ここからスクリプト
-- 定義
set myName to "FaxGet" -- プログラム名
set faxGet to "/usr/local/bin/faxget.pl" -- エンジンスクリプトパス
set faxDir to "/Users/Shared/FAX/" -- FAX保存先パス
set serverName to "www.hikari.ntt-east.co.jp" -- サーバ名
set serverURL to "https://" & serverName & "/" -- サーバURL
--set downDir to faxDir & "tif/" as POSIX file -- FAX画像保存先パス
set downDir to faxDir & "pdf/" as POSIX file -- FAX画像保存先パス
set newList to faxDir & "inf/new.txt" as POSIX file -- 受信情報保存先パス

set loginInfoExist to 1
set loginInfoChange to 0

repeat
-- 開始ダイアログ
display dialog "受信したFAXをダウンロードして表示します。

[ OK ] を選択して開始してください。
[ キャンセル ] を選択すると中断します。

[設定] を選択してログイン情報を設定・変更します。
" buttons {"設定", "キャンセル", "OK"} default button 3 with title myName
set button_returned to button returned of result
if button_returned is "設定" then
-- 設定
set selList to choose from list {"このコンピュータにログイン情報を設定する", "ブラウザでサーバーを表示してFaxGetを終了"} ¬
default items "このコンピュータにログイン情報を設定する" with title myName
if selList is not equal to false then
-- 選択項目あり
set selListString to item 1 of selList
if selListString is "このコンピュータにログイン情報を設定する" then
-- このコンピュータにログイン情報を設定する
set tmpID to ""
set tmpPassword to ""

-- ログイン情報取得
try
-- set {userID, userPassword, userKey} to my UserInfoByKeychain(serverName)
set {userID, userPassword} to my UserInfoByCmd(serverName)
set tmpID to userID
set tmpPassword to userPassword
on error
set loginInfoExist to 0
end try

-- ログイン情報設定
try
-- FAX番号
display dialog "FAX番号を設定してください。
例)0112345678" default answer tmpID with title myName
set userID to text returned of result
if tmpID is not userID then
set loginInfoChange to 1
end if

-- パスワード
display dialog "サーバーに設定したパスワードを設定してください。
[OK] 選択後、サーバーに接続します。" default answer tmpPassword with title myName
set userPassword to text returned of result
if tmpPassword is not userPassword then
set loginInfoChange to 1
end if
exit repeat
end try

else
-- ブラウザでサーバー表示してFaxGetを終了
open location serverURL
return
end if
end if
else
-- OK(ログインアカウント取得)
try
--set {userID, userPassword, userKey} to my UserInfoByKeychain(serverName)
set {userID, userPassword} to my UserInfoByCmd(serverName)
exit repeat
on error
beep
display dialog return & "ログイン情報が取得できません。
未設定の場合は設定してください。" buttons {"OK"} default button 1 with icon stop with title myName
end try
end if
end repeat

-- 受信FAXをダウンロード
try
do shell script faxGet & " -i " & userID & " -p " & userPassword & " -d " & faxDir & " -u " & serverURL
on error msg number val
beep
display dialog return & msg buttons {"OK"} default button 1 with icon stop with title myName
return
end try

-- ログイン情報更新
if loginInfoChange is 1 then
try
-- 既存のログイン情報を削除
if loginInfoExist is 1 then
--DeleteUserInfo(userID)
DeleteUserInfoByCmd(userID, serverName)
end if
-- 新規ログイン情報を設定
--AddUserInfo(userID, userPassword, serverName)
AddUserInfoByCmd(userID, userPassword, serverName)
on error
display dialog return & "ログイン情報の更新に失敗しました。(キーチェーンアクセス)" buttons {"続行"} ¬
default button 1 with icon caution with title myName
end try
end if

-- ダウンロードしたFAXのリストを取得
set aList to {}
try
set FH to open for access alias newList
repeat
try
set aLine to read FH before ASCII character (10)
set end of aList to aLine
on error
exit repeat
end try
end repeat
close access FH
end try

beep

set aNum to count of aList
if aNum = 0 then
display dialog "
サーバーに新しいFAXはありません。
保存先のフォルダを開きます。" buttons {"OK"} default button 1 with icon note with title myName
else
display dialog "
受信したFAX(" & aNum & "通)を表示します。" buttons {"OK"} default button 1 with icon note with title myName
end if

-- FAXフォルダを表示
tell application "Finder"
activate
open folder downDir
end tell

-- FAXがなければ終了
if aNum = 0 then
return
end if

-- ダウンロードしたFAXを表示
repeat with i from 1 to count of aList
try
set openFile to (text item i of aList) as POSIX file
--display dialog openFile
tell application "Finder"
open file openFile
end tell
on error
exit repeat
end try
end repeat

-- アカウント情報の取得
on UserInfoByKeychain(serverName)
tell application "Keychain Access"
set userKey to first «class cint» of «class pckc» whose «class psrv» is serverName
set userID to «class pact» of userKey
set userPassword to «class ppas» of userKey
end tell

return {userID, userPassword, userKey}
end UserInfoByKeychain

-- アカウント情報の削除
on DeleteUserInfo(userKey)
tell application "Keychain Access"
delete userKey
end tell
end DeleteUserInfo

-- アカウント情報の追加
on AddUserInfo(userID, userPassword, serverName)
tell application "Keychain Access"
make new «class cint» with properties {«class pact»:userID, «class ppas»:userPassword, «class psrv»:serverName, «class ppth»:"", «class pptl»:"http"}
end tell
end AddUserInfo

-- アカウント情報の削除(securityコマンドを使用)
on DeleteUserInfoByCmd(userID, serverName)
do shell script "security delete-internet-password -a " & userID & " -s " & serverName & " 2>&1"
end DeleteUserInfoByCmd

-- アカウント情報の追加(securityコマンドを使用)
on AddUserInfoByCmd(userID, userPassword, serverName)
do shell script "security add-internet-password -a " & userID & " -s " & serverName & " -w " & userPassword & " 2>&1"
end AddUserInfoByCmd

-- アカウント情報の取得(securityコマンドを使用)
on UserInfoByCmd(serverName)
set theResult to do shell script "security find-internet-password -g -s " & serverName & " 2>&1"
repeat with thisLine in paragraphs of theResult
if thisLine contains "password" then
set userPassword to my getValue(contents of thisLine, ":")
else if thisLine contains "acct" then
set userID to my getValue(contents of thisLine, "=")
end if
end repeat
return {userID, userPassword}
end UserInfoByCmd

-- ユーザID, パスワード文字列の取得
on getValue(str, offsetStr)
set n to offset of offsetStr in str
set str to text (n + 1) thru -1 of str
set AppleScript's text item delimiters to ASCII character 34
set theList to text items of str
set AppleScript's text item delimiters to {""}
return (theList as Unicode text)
end getValue




月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(1件)

タイトル (本文) ブログ名/日時
「FAXお知らせメール」サービスで受信スクリプトを作成(Mac OSX用)
ひかり電話の「FAXお知らせメール」というサービスに加入しました。 NTT側のサーバでFAXを受信してくれて、受信FAXをブラウザからダウンロードできるサービスなのですが、ログインからFAXをダウンロードするという一連の手順が面倒だったので、受信スクリプトを作成することにしました。 ...続きを見る
おうちゃくん
2009/04/05 00:28

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
FAX受信スクリプト本体(AppleScript) おうちゃくん/BIGLOBEウェブリブログ
文字サイズ:       閉じる