2017-07-29 5 views
0

データを読み込みます_MyData.plistのデータ変更のAppleScriptがしかし、ときに私は、変数が</p> <p>すべてが正常に動作し、「〜/デスクトップ/ _MyData.plist」から取られ</p> <p>メニューバーにいくつかのデータを表示する画面を実行して、数分ごと

どうすればスクリプトに新しいデータを取得させることができますか? AppleScriptがファイルの変更を検出してからスクリプトを実行することは期待できませんが、plistデータをアイドル状態にしてスクリプト全体を実行し続ける方法があります。ここで

データのみを取得することを一部です:

property theAccountNumberFromPlist : "" 
property SNNumber : "" 
property appName : "" 
property devicesID : "" 
property domainEMAIL : "" 
property fullEmail : "" 
property purchaseDate : "" 
property thename : "" 
property theList : "" 

set the plistfile_path to "~/Desktop/_MyData.plist.plist" 
tell application "System Events" 
    set p_list to property list file (plistfile_path) 
    -- read the plist data 

set theAccountNumberFromPlist to value of property list item "AccountNumber" of p_list as text 
set SNNumber to value of property list item "SNNUMBER" of p_list as text 
set appName to value of property list item "appName" of p_list as text 
set devicesID to value of property list item "devicesID" of p_list as text 
set domainEMAIL to value of property list item "domainEMAIL" of p_list as text 
set fullEmail to value of property list item "fullEmail" of p_list as text 
set purchaseDate to value of property list item "purchaseDate" of p_list as text 
set thename to value of property list item "thename" of p_list as text 

終わりここ

を伝える全体のスクリプトです:

use AppleScript version "2.4" 
use scripting additions 
use framework "Foundation" 
use framework "AppKit" 

property StatusItem : missing value 
property selectedMenu : "" 
property theDisplay : "" 
property defaults : class "NSUserDefaults" 
property internalMenuItem : class "NSMenuItem" 
property externalMenuItem : class "NSMenuItem" 
property newMenu : class "NSMenu" 
property theAccountNumberFromPlist : "" 
property SNNumber : "" 
property appName : "" 
property devicesID : "" 
property domainEMAIL : "" 
property fullEmail : "" 
property purchaseDate : "" 
property thename : "" 
property theList : "" 




set the plistfile_path to "~/Desktop/_MyData.plist.plist" 
tell application "System Events" 
    set p_list to property list file (plistfile_path) 
    -- read the plist data 

    set theAccountNumberFromPlist to value of property list item "AccountNumber" of p_list as text 
    set SNNumber to value of property list item "SNNUMBER" of p_list as text 
    set appName to value of property list item "appName" of p_list as text 
    set devicesID to value of property list item "devicesID" of p_list as text 
    set domainEMAIL to value of property list item "domainEMAIL" of p_list as text 
    set fullEmail to value of property list item "fullEmail" of p_list as text 
    set purchaseDate to value of property list item "purchaseDate" of p_list as text 
    set thename to value of property list item "thename" of p_list as text 
end tell 
if not (current application's NSThread's isMainThread()) as boolean then 
    display alert "This script must be run from the main thread." buttons {"Cancel"} as critical 
    error number -128 
end if 

on menuNeedsUpdate:(menu) 

    my makeMenus() 
end menuNeedsUpdate: 

on makeMenus() 

    newMenu's removeAllItems() 

    repeat with i from 1 to number of items in someListInstances 
     set this_item to item i of someListInstances 
     set thisMenuItem to (current application's NSMenuItem's alloc()'s initWithTitle:this_item action:"someAction:" keyEquivalent:"") 

     (newMenu's addItem:thisMenuItem) 

     (thisMenuItem's setTarget:me) -- required for enabling the menu item 
     if i is equal to 3 then 
      (newMenu's addItem:(current application's NSMenuItem's separatorItem)) -- add a seperator 
     end if 
    end repeat 

end makeMenus 



on someAction:sender 
    --MenuItem 
end someAction: 

-- create an NSStatusBar 
on makeStatusBar() 
    set bar to current application's NSStatusBar's systemStatusBar 

    set StatusItem to bar's statusItemWithLength:-1.0 

    -- set up the initial NSStatusBars title 
    StatusItem's setTitle:(theAccountNumberFromPlist & " " & thename & " " & fullEmail & " " & SNNumber & " " & appName) 
    -- set up the initial NSMenu of the statusbar 
    set newMenu to current application's NSMenu's alloc()'s initWithTitle:"Custom" 

    newMenu's setDelegate:me (* 


    *) 

    StatusItem's setMenu:newMenu 

end makeStatusBar 


my makeStatusBar() 

答えて

0

アイドルハンドラを使用してください。

on idle 
-- do your stuff 
return 5 -- idle handler will be executed again in 5 seconds. 
end 

したがって、スクリプトをアプリケーションとして保存する必要があります。リンゴのドキュメント

アイドルと、デフォルトでは、滞在-開いているアプリケーション

ため は、単一のコマンドとが終了することを処理し、実行またはオープンコマンドを受信したスクリプトアプリケーションをハンドラを終了してから相続人不可欠。これとは対照的に、ステイオープン スクリプトアプリケーション(1つはステイタスオープンとしてスクリプトエディタに保存されています)は、起動後には のままになります。

滞在-開いているスクリプトのアプリケーションを実行してオープンする 加えて他のコマンドを受信して​​処理することができ

滞在-開いているスクリプトアプリケーションは、いくつかの理由のために有用であることができます。これにより、スクリプトアプリケーション をスクリプトサーバーとして使用することができます。スクリプトサーバーは実行中に他のスクリプトによって呼び出される ハンドラのコレクションを提供します。

ステイオープンスクリプトアプリケーションは、スクリプトアプリケーションが実行されている限り、 のバックグラウンドであっても、定期的なアクションを実行できます。

は、idlehandlerとquitハンドラの2つのハンドラです。

アイドルハンドラ

滞在-開いているスクリプトのアプリケーションがアイドルハンドラが含まれている場合は、 AppleScriptは、スクリプトのアプリケーション定期的アイドルコマンド-で デフォルトの送信ごとに30それがあるとき それがバックグラウンドタスクを実行するために秒は、許可他のアクションを実行しません。

アイドルハンドラが正数を返す場合、その数値はハンドラが呼び出される レート(秒単位)になります。ハンドラ が数値以外の値を返した場合、レートは変更されません。 0 を返して、デフォルトの遅延を30秒間維持することができます。アイドル ビープ音の

リターン5
アイドル終了

:たとえば

は、滞在-オープンアプリケーションとして保存すると、次 スクリプトは5秒ごとにビープ音が鳴ります

関連する問題

 関連する問題