Script che emette il numero di e-mail nella posta in arrivo di Mail.app

6

Mi piacerebbe avere uno script da riga di comando che posso richiamare sul terminale che emetterà il numero totale di messaggi nella mia casella di posta "Lavoro" in mail.app. L'utilizzo sarebbe simile a questo:

$ inbox-count
48

Che aspetto ha il codice di Applescript per fare qualcosa di simile?

    
posta Lorin Hochstein 07.02.2011 - 16:37
fonte

1 risposta

17

Se si desidera ottenere il numero di messaggi in detta casella di posta, la forma abbreviata del codice è

tell application "Mail" to ¬
  get the count of messages of mailbox "INBOX" of account "Work"

Se desideri la posta in arrivo globale, puoi utilizzare get the count of messages of inbox . Se desideri solo messaggi non letti, puoi utilizzare get the unread count of mailbox "INBOX" of account "Work" .

E se vuoi uno script più completo, questo farà il trucco:

#!/usr/bin/osascript
property defaultAccount : "Work"
property defaultMailbox : "INBOX"

on run args
  set justUnread to false
  set theAccount to missing value
  set theMailbox to missing value

  if defaultAccount = missing value then set defaultAccount to "-g"
  if defaultMailbox = missing value then set defaultMailbox to "INBOX"

  set theCount to the count of args

  if theCount > 0 then
    if item 1 of args = "-u" then
      set justUnread to true
      set theCount to theCount - 1
      set args to the rest of args
    else if item 1 of args = "-ug" or item 1 of args = "-gu" then
      set justUnread to true
      set item 1 of args to "-g"
    else if theCount > 1 and ¬
            item 1 of args = "-g" and item 2 of args = "-u" then
      set justUnread to true
      set theCount to theCount - 1
      set args to the rest of args
      set item 1 of args to "-g"
    end if
  end if

  tell application "Mail"
    if theCount = 0 then
      set theAccount to defaultAccount
      set theMailbox to defaultMailbox
    else if theCount = 1 then
      set theAccount to item 1 of args
      set theMailbox to defaultMailbox
    else if theCount = 2 then
      set theAccount to item 1 of args
      set theMailbox to item 2 of args
    else
      error character id 10 ¬
          & "Usage: inbox-count [-u] [[account] mailbox]" & character id 10 ¬
          & "       inbox-count [-u] -g [mailbox]"
    end if

    set mailboxValue to missing value
    if theAccount = "-g" then
      if theMailbox = "INBOX" then
        set mailboxValue to inbox
      else
        set mailboxValue to mailbox theMailbox
      end if
    else
      set mailboxValue to mailbox theMailbox of account theAccount
    end if

    if justUnread then
      return the unread count of mailboxValue
    else
      return the count of messages of mailboxValue
    end if
  end tell
end run

La maggior parte di ciò è l'analisi della riga di comando, perché è un problema avere ragione in AppleScript. Ma il risultato è che con quello script nel tuo percorso come inbox-count , i seguenti comandi funzionano:

  • inbox-count per controllare il numero di messaggi nella coppia predefinita di casella postale / account.
  • inbox-count -g per controllare il numero di messaggi nella posta in arrivo globale (combinata).
  • inbox-count Play per verificare il numero di messaggi nella casella di posta predefinita per l'account "Riproduci".
  • inbox-count -g Important per controllare il numero di messaggi nella casella postale globale "Importante".
  • inbox-count Play Facebook per controllare il numero di messaggi nella casella "Facebook" per l'account "Riproduci".

Puoi anche anteporre un -u a uno qualsiasi di questi comandi ( per esempio , inbox-count -u , inbox-count -ug , inbox-count -u Play Facebook ) per ottenere il conteggio non letto. Per modificare l'account e la cassetta postale predefiniti, modifica le righe property defaultAccount : "Work" e property defaultMailbox : "INBOX" . Se defaultAccount è missing value o "-g" , il valore predefinito sarà quello di non utilizzare un account; se defaultMailbox è missing value o "INBOX" , il valore predefinito sarà utilizzare una cassetta postale denominata "INBOX" oppure, se l'account è "-g" , utilizzare la Posta in arrivo globale.

    
risposta data 07.02.2011 - 18:08
fonte

Leggi altre domande sui tag