2016-04-28 4 views
0

開始スクリプトを作成しようとすると、時刻に応じてユーザに挨拶してから、システム(どのくらいのメールとメッセージの量)、私の問題は、私はカレンダーのイベントを含めることであり、私は初めてのログオン時にのみ、現在の日のイベントの量を言いたい。どんな助けもありがとうございます。Applescript - ユーザがその日に初めてログインしたかどうかを確認するには

+0

シェルコマンド 'last'はログイン履歴を表示します。 – vadian

+0

私はそれを知っていますが、日付をチェックする方法がわかりません –

+0

「日付をチェックする」とはどういう意味ですか? – ThrowBackDewd

答えて

0

スクリプトが現在のユーザーに固有のものにしたい、あなたはプログラムが実行されるたびに日付を書き込む設定ファイルをユーザーのログインディレクトリに格納することができます。次に、ファイル内の日付が今日の日付かどうかを確認するだけです。 AppleScriptでは、このような何かを行くことができる

:それは隠しファイルとdoesnの」であるように、私は意図的に設定ファイル名($HOME/.yourApp)の最初の文字としてピリオド/ドットを持って

-- Get current date in format "03/05/2016" 
set currentDate to short date string of (current date) 

-- Specify name of our config file in HOME directory - EDIT THIS 
set configFile to ((path to home folder as string) & ".yourApp") 

-- See what date, if any, is currently in the file 
try 
    set previousContent to (read file configFile) 
on error 
    set previousContent to "" 
end try 

-- Put today's date in the file as we have run today 
try 
    set fileRef to open for access file configFile with write permission 
    set eof of fileRef to 0 
    write currentDate to fileRef starting at eof 
    close access fileRef 
end try 

-- See if date of previous run is same as today's date 
if currentDate is previousContent then 
    display dialog "Not first login today" 
else 
    display dialog "First login today" 
end if 

注意Finderに表示されます。

1

私が正しく、この質問を読んでいるが、私はあなたが最後の2回にログインした人との間の差を決定しようとしていると考えている場合は正確にわからない。

もしそうなら、あなたは一日数をキャプチャすることができますdoシェルスクリプトの最新の2つのログイン:

last -2 eric|cut -d" " -f28|tail -1 

last -2 eric|cut -d" " -f28|tail -2|head -1 

最後の2回のログインの月の日を取得します。明白なキャッチは、彼らが今月の3日と先月の3日にログインした場合です。

日が等しい場合は、月が等しいかどうかを確認するif節を追加できます。 3文字の月コードは-f27にあります(上記の-f28ではなく)。

月を確認して開始することもできますが、それらが等しい場合は、日をチェックしてください。それらを変数に格納するか、()dステートメントを使用して比較するだけです。

例:

if (do shell script "last -2 " & userName & "|cut -d\" \" -f27|tail -1") is equal to (do shell script "last -2 " & userName & "|cut -d\" \" -f27|tail -2|head -1") then 
    if (do shell script "last -2 " & userName & "|cut -d\" \" -f28|tail -1") is equal to (do shell script "last -2 " & userName & "|cut -d\" \" -f28|tail -2|head -1") then 
     -- need to check for too few logins to compare, which will return a null string. 
     if (do shell script "last -2 " & userName & "|cut -d\" \" -f28|tail -1") is not equal to "" then 
     set firstLoginToday to false 
     else 
     set firstLoginToday to true 
    else 
     set firstLoginToday to true 
    end if 
else 
    set firstLoginToday to true 
end if 

これはあなたがしようとしていたものを解決する場合、私は好奇心が強い...

+0

私は起動時に非常にシンプルなパーソナルアシスタントを作ろうとしています。メールカウントやメッセージ数などのことを教えてくれます。問題はカレンダーイベントです。ユーザーがログインしたのは初めてですその日の間に、その日にログインするのが初めてであるかどうかを確認するアイデアでした。火曜日と水曜日の間に –

+0

次に、上記のコードをテストとしての関数として含めることができます。 "set"行をtrueまたはfalseの "return"に変更するだけです。誰かが火曜日にログインし、最後のログインが前の火曜日だった場合にtrueを返す曜日チェックよりも堅牢になります。もちろん、 "userName"も適切に設定する必要があります。あなたのコードの前の方で、あるいはすでに設定している実際のユーザ名変数に変更してください。 – EricDAltman

関連する問題