2017-01-31 11 views
0

私が最初に投稿したのはちょっと乱雑になってしまいました。AppleScript、予定時刻

XMLデータをカールから運送会社の公開APIに変換するスクリプトがあります。データを解析し、 "Line"という名前のXML要素をすべて配列に格納します。次に、これらの要素のすべてが繰り返し実行され、XML要素からのデータを含む変数が作成されます。

これらのXML要素の1つに、「2017-01-31T14:04:00」のようにdateTtimeの形式で出発時刻の値が含まれています。私はその値を変数に入れて、時間と日付を分けたいと思います。だから、私はAppleScriptのテキスト項目デリミタを使って "T"に設定して、前のものの "テキスト項目2"に設定した変数を作成します。うまく動作し、私は変数に格納されている時間のデータを取得します。

今、その変数にAppleScriptsの「時刻」を使用して、時間を秒単位で取得したいと考えています。ここでそれが壊れて、私は "システムイベントがエラーを持っているというエラーメッセージが表示されます:XMLファイルの" Macintosh HD:ユーザー:John:Desktop:my_xml_file.xml "の文字列を入力すると、日付の時刻" 14:04:00 " "ここで

はコードです:

set theXMLFile to "/Users/John/Desktop/my_xml_file.xml" 

set poster to {} 

tell application "System Events" 
    set xmlData to XML file theXMLFile 
    tell contents of xmlData 
     try 
      set poster to XML elements of XML element "Lines" of XML element "GetDepartureArrivalResult" of XML element "GetDepartureArrivalResponse" of XML element "soap:Body" of XML element "soap:Envelope" whose name is "Line" 
      repeat with i from 1 to (count poster) 
       set departure to value of XML element "JourneyDateTime" of item i of poster as text 
       set AppleScript's text item delimiters to "T" 
       set depTime to text item 2 of departure 
       display dialog time of date (depTime as string) 
       set AppleScript's text item delimiters to "" 
      end repeat 
     on error errStr 
      display dialog errStr 
     end try 
    end tell 
end tell 

私は、次のテスト・スクリプトにこのコードを変更する場合:

set departure to "2017-01-31T14:04:00" as text 
set AppleScript's text item delimiters to "T" 
set depTime to text item 2 of departure 
display dialog depTime 
display dialog time of date (depTime as string) 

その後、私は秒の正しい数を示すダイアログなしエラーを取得しますメッセージ。私はちょうど私が間違ってやっているかを把握することはできません

=/

答えて

0

システムイベントは、あなたが望む時間の概念を扱いません。このように、代わりに「私を」教える:

  set departure to value of XML element "JourneyDateTime" of item i of poster as text 
      set AppleScript's text item delimiters to "T" 
      set depTime to text item 2 of departure 
      tell me to display dialog time of date (depTime as string) 
      set AppleScript's text item delimiters to "" 
+0

ありがとうございました!私は私が使用してそれを解決するために管理し、あなたの記事を読む前に私が試してみて – FrassesFik

+0

:)ということを覚えています: '設定depTimeSeconds私getTimeInSecondsにgetTimeInSeconds上(depTime)' と '(myTime) \tセットtempDate date myTime \t tempSecondsをtempDateの時刻に設定します。 \t return tempSeconds end getTimeInSeconds' – FrassesFik

+0

ハンドラを使用すると、システムイベントのtellブロックを終了するため、これが機能します。それを行う別の方法は、System Events tellブロック内の "私"に、 –

0

問題は、文字列から日付を構築するシステム環境設定の領域と時刻の形式の設定に敏感である可能性が高いです。私は24時間ではなく12時間の時間が設定されていると思いますので、 "14:04:00"で日付を作ることはできません。あなたは "02:04:00 PM"でそれを作ることができます。

+0

いいえを伝えることです。これはstagetとして別のスクリプトで動作します。私は24時間フォーマットも使用しています。 – FrassesFik

関連する問題