Script que genera la cantidad de correos electrónicos en la bandeja de entrada de Mail.app

6

Me gustaría tener una secuencia de comandos de línea de comandos que pueda invocar en la Terminal que muestre el número total de mensajes en mi bandeja de entrada "Trabajo" en mail.app. El uso se vería así:

$ inbox-count
48

¿Qué aspecto tiene el código Applescript para hacer algo como esto?

    
pregunta Lorin Hochstein 07.02.2011 - 16:37

1 respuesta

17

Si desea obtener el número de mensajes en dicha bandeja de entrada, la forma abreviada del código es

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

Si desea la bandeja de entrada global, puede usar get the count of messages of inbox en su lugar. Si solo quieres mensajes no leídos, entonces puedes usar get the unread count of mailbox "INBOX" of account "Work" .

Y si quieres un script más completo, esto hará el truco:

#!/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 mayor parte de eso es el análisis de la línea de comandos, porque es un dolor conseguirlo correctamente en AppleScript. Pero el resultado final es que con ese script en su ruta como inbox-count , entonces los siguientes comandos funcionan:

  • inbox-count para verificar la cantidad de mensajes en el par predeterminado de buzones / cuentas.
  • inbox-count -g para verificar el número de mensajes en la bandeja de entrada global (combinada).
  • inbox-count Play para verificar la cantidad de mensajes en el buzón predeterminado de la cuenta "Jugar".
  • inbox-count -g Important para verificar la cantidad de mensajes en el buzón global "Importante".
  • inbox-count Play Facebook para verificar la cantidad de mensajes en el buzón "Facebook" para la cuenta "Jugar".

También puede anteponer un -u a cualquiera de esos comandos ( ej. , inbox-count -u , inbox-count -ug , inbox-count -u Play Facebook ) para obtener el recuento no leído. Para cambiar la cuenta y el buzón predeterminados, cambie las líneas property defaultAccount : "Work" y property defaultMailbox : "INBOX" . Si defaultAccount es missing value o "-g" , entonces el valor predeterminado será no usar una cuenta; Si defaultMailbox es missing value o "INBOX" , entonces el valor predeterminado será usar un buzón llamado "INBOX" o, si la cuenta es "-g" , usar la bandeja de entrada global.

    
respondido por el Antal Spector-Zabusky 07.02.2011 - 18:08

Lea otras preguntas en las etiquetas