0 votos

Automator: seleccione solo un archivo de muchos archivos en una carpeta. Script necesario?

Tengo una carpeta con diferentes 100 rtf-texto-archivos en una carpeta.

Me gustaría tener Automator para tomar el contenido de un archivo de texto y enviar vía correo una vez al día para el mismo correo-direcciones - sin necesidad de enviar el mismo texto dos veces.

Porque yo soy un novato y no encontrar una forma de filtrar sólo un archivo rtf con Automator de acciones predefinidas, creo que tengo que crear un script.

Lo que he conseguido hasta ahora:

Nueva Aplicación:

  1. Encontrar el Buscador de Artículo: elegí la carpeta con los archivos. Condición: la extensión de Archivo es rtf -> ahora tengo todos (3 prueba-)rtf como resultado.

(*)

  1. Abra el Finder-Item: Abrir con aplicación predeterminada
  2. Obtener el Contenido del Documento TextEdit
  3. Nuevo Mensaje De Correo

Lo que este flujo de trabajo: Se abre a todos los rtf archivos en TextEdit. A continuación, un nuevo Correo Ventana se abre y muestra el contenido de la última vez que abrió archivo de texto. De la causa que no enviarlo.

Creo que tengo que incluir un paso/script donde el (*) es, por lo Automator ha específica rtf-file para pasar a los siguientes pasos. Puede usted por favor me ayuden a encontrar a este paso, o me muestran cómo crear una secuencia de comandos? O tal vez usted sabe otra solución?

enter image description here

0voto

user3439894 Puntos5883

Cuando se quiere elegir al azar a partir de un grupo de archivos, para enviar el contenido de los mismos como un correo electrónico, garantizando a la vez el contenido de cada archivo se utiliza sólo una vez, requiere el mantenimiento de una lista de nombres de archivo de las que el contenido ya ha sido enviado. Hay un par de maneras diferentes de esta lista se pueden crear, acceder y mantenerse.

Mantenerse alejado de Automator y usando AppleScript para todo el proceso, lo más fácil sería como un AppleScript property variable, sin embargo, un AppleScript property variable consigue restablecer si el guión se vuelve a compilar en el Editor de secuencias de Comandos y / o guarda de nuevo después de haber sido originalmente guardado.

Esto no es necesariamente un problema, si una vez que el script ha sido correctamente configurado para satisfacer las necesidades y funciona correctamente durante la prueba, a continuación, se guarda como una aplicación y no modificado o guarda de nuevo después de la ejecución inicial de haber sido guardado como una aplicación. Si que podría ser un problema, a continuación, la lista deberá ser guardado como un archivo de disco. (Personalmente, yo prefiero utilizar el archivo de disco.)

Guardar la lista de nombres de archivo de las que el contenido ya ha sido enviado por correo electrónico como un archivo de disco también se puede hacer en un número de maneras. Básicamente usted tiene que elegir uno de los caminos posibles y el código que corresponda.

El siguiente AppleScript código de ejemplos, se muestran dos formas de realizar la tarea global. La primera, el uso de un AppleScript property variable y el segundo, con un archivo de disco, para mantener la lista.

  • Nota: En uno de mis comentarios, me preguntó "¿los archivos tienen que ser de Texto Enriquecido o pueden ser de Texto plano?", y la razón de esto es, como Texto sin formato el archivo no sería necesario que se abrió en la GUI para recuperar el contenido, donde como Texto Enriquecido tendría que ser abierto .e.g. TextEdit para recuperar el contenido. No tener que hacerlo a través de la GUI es más rápido y visualmente menos molesta. Además, si esto se hace en Automator usando el de Obtener los Contenidos del Documento de TextEdit acción, recupera el contenido como texto sin formato de todos modos. Así que, en realidad, es ventajoso utilizar Texto sin formato archivos de Texto Enriquecido , para empezar. Estos ejemplos están codificados para el uso de Texto Enriquecido y TextEdit, con una modificación que se muestra después si el uso de Texto sin formato.

En el primer ejemplo de AppleScript código, hay algunas variables que se necesitará para establecer:

  • thisFolder - La ubicación de la carpeta que contiene el 100 archivos.
  • theRecipientName - El Nombre del Destinatario del Correo electrónico.
  • theRecipientAddress - La Dirección de Correo electrónico del Destinatario del Correo electrónico.
  • theSubject - El Asunto del Mensaje de Correo electrónico.

En el segundo ejemplo de AppleScript código, además de las variables se muestra arriba:

  • theAlreadySentListFilename - La ubicación y el nombre del archivo que contiene los nombres de archivo de las que el contenido ya ha sido enviado.

El resto de la secuencia de comandos está codificado en una forma (señalizado) para trabajar con estas variables y los demás establecidos dentro de la secuencia de comandos. También, el tell application "Mail" bloque de código está codificado para enviar el mensaje de forma automática, sin embargo, se ha comentado, hasta que se hace la prueba y o si no quieren enviar de forma automática. Descomentar en consecuencia.

Para utilizar este script, en el Editor de secuencias de Comandos, crear un nuevo documento y guardarlo como una aplicación en /Aplicaciones, nombres como, por ejemplo, 100 Mensajes para Enviar.app.

A continuación, copie y pegue el ejemplo de AppleScript código siguiente en el 100 Mensajes para Enviar.aplicación en el Editor de secuencias de Comandos y pulsa la Compilación botón en la Barra de herramientas.

Modificar las variables, ya mencionado anteriormente.

Guardar la aplicación y prueba desde dentro del Editor de secuencias de Comandos.

Una vez hecho esto con pruebas, golpeó la Compilación botón en la Barra de herramientas para restablecer la theAlreadySentList AppleScript property variable para vaciar la lista, a continuación, guarde y cierre el 100 Mensajes para Enviar.app para no restablecer la theAlreadySentList AppleScript property variable una vez que el modo de producción comienza.

Primer ejemplo de AppleScript código:

--  ### Folder Path Variable

--  # Set the location of the folder containing the 100 files.
--  # NOTE: All 100 files must be in the same individual folder.

set thisFolder to (path to documents folder as text) & "100 Messages to Send"

--  ### Mail Variables

set theRecipientName to "John Doe"
set theRecipientAddress to "johndoe@domain.com"
set theSubject to "Hello World"
--  # Leave the following as 'missing value'.
set theMessageContent to missing value


--  ##### DO NOT modify below this line unless necessary. #####


--  ### Some Other Variables

--  # The property variable  'theAlreadySentList',  is a list of 
--  # filenames from which the messages have already been sent.
--  # The value of this property is maintained so long as
--  # this script is not save again or recompiled after it
--  # has been originally saved for the first time.

property theAlreadySentList : {}
global thisFile

--  ### Handler

on chooseRandomFileFrom(thisFolder)
    tell application "Finder"
        set thisFile to some file of container thisFolder
    end tell
    return thisFile
end chooseRandomFileFrom

--  # Get the count of entries in the 'theAlreadySentList' list.
--  # This is used to display a message and break the 'repeat' loop
--  # once all 100 messages have been sent.

set theCount to (count of theAlreadySentList) as integer

--  # Choose a file at random.

set thisFileName to name of chooseRandomFileFrom(thisFolder)

--  # Evaluate the sent status of 'thisFileName' and respond accordingly.

repeat -- 200 times -- # Uncomment if you want a failsafe out of the 'repeat' loop.
    if theCount is equal to 100 then
        display dialog "All 100 messages have already been sent!" buttons {"OK"} default button 1
        exit repeat
    else if thisFileName is in theAlreadySentList then
        --  # Choose another file at random.
        set thisFileName to name of chooseRandomFileFrom(thisFolder)
    else
        --  # This file has not been used yet, process accordingly.
        set end of theAlreadySentList to thisFileName
        tell application "TextEdit"
            open thisFile
            activate
            delay 1 --# Adjust as necessary. Time must be given for the file to open before proceeding.
            set theMessageContent to text of front document
            close front document
        end tell
        tell application "Mail"
            activate
            set theMessage to make new outgoing message with properties {visible:true, subject:theSubject, content:theMessageContent}
            tell theMessage
                make new to recipient at end of to recipients with properties {name:theRecipientName, address:theRecipientAddress}
            end tell
            -- delay 1 --# Adjust as necessary. Uncomment to use this command.
            -- send theMessage --# Uncomment to use this command.
        end tell
        exit repeat
    end if
end repeat

En este segundo ejemplo de AppleScript código, un archivo de disco se utiliza para almacenar la lista de nombres de archivo de las que el contenido ya ha sido enviado como un mensaje de correo electrónico.

Para utilizar este script, en el Editor de secuencias de Comandos, crear un nuevo documento y guardarlo como una aplicación en /Aplicaciones, nombres como, por ejemplo, 100 Mensajes para Enviar.app. Esto se hace así que usted puede añadir un texto sin formato de archivo para el paquete de la aplicación a utilizar para la lista de nombres de archivos ya enviados. (Prefiero mantener de apoyo relacionados con los archivos dentro del paquete de la aplicación.)

Necesidad de guardar el documento como una aplicación, ahora abra el paquete de la aplicación (en Finder, haga clic en Mostrar Contenido del Paquete) para Contents/Resources/ y crear, por ejemplo, los Mensajes Enviados nombre de archivo List.txt archivo como un archivo vacío y, a continuación, cierre el paquete de la aplicación.

A continuación, copie y pegue el ejemplo de AppleScript código siguiente en el por ejemplo, 100 Mensajes para Enviar.aplicación en el Editor de secuencias de Comandos y pulsa la Compilación botón en la Barra de herramientas.

Modificar las variables, como se mencionó anteriormente.

Guardar la aplicación y prueba desde dentro del Editor de secuencias de Comandos.

Una vez hecho esto con las pruebas, borrar las entradas de los Mensajes Enviados nombre de archivo List.txt, por lo que es un archivo vacío cuando se ejecuta la aplicación por primera vez en el modo de producción.


Segundo ejemplo de AppleScript código:

--  ### Folder Path Variable

--  # Set the location of the folder containing the 100 files.
--  # NOTE: All 100 files must be in the same individual folder.

set thisFolder to (path to documents folder as text) & "100 Messages to Send"

--  ### Mail Variables

set theRecipientName to "John Doe"
set theRecipientAddress to "johndoe@domain.com"
set theSubject to "Hello World"
--  # Leave the following as 'missing value'.
set theMessageContent to missing value

--  ### Sent Messages Filename List Location Variable

--  # Set the location and name of the file containing the 
--  # filenames from which the content has already been sent.

set myPath to POSIX path of (path to me as string)
set theAlreadySentListFilename to myPath & "Contents/Resources/Sent Messages Filename List.txt"


--  ##### DO NOT modify below this line unless necessary. #####


--  ### Some Other Variables

global thisFile
global theAlreadySentList
set theAlreadySentList to {}

--  ### Handlers

on buildListFromDiskFile(thisDiskFile)
    set thisContent to do shell script "cat " & quoted form of thisDiskFile
    repeat with thisParagraph in paragraphs of text in thisContent
        set end of theAlreadySentList to (thisParagraph as text)
    end repeat
end buildListFromDiskFile

on chooseRandomFileFrom(thisFolder)
    tell application "Finder"
        set thisFile to some file of container thisFolder
    end tell
    return thisFile
end chooseRandomFileFrom

--  # Load data from disk file for: 'theAlreadySentList'

buildListFromDiskFile(theAlreadySentListFilename)

--  # Get the count of entries in the 'theAlreadySentList' list.
--  # Used to display a message once all 100 messages have been sent.

set theCount to (count of theAlreadySentList) as integer

--  # Choose a file at random.

set thisFileName to name of chooseRandomFileFrom(thisFolder)

--  # Evaluate the sent status of 'thisFileName' and respond accordingly.

repeat -- 200 times -- # Uncomment if you want a failsafe out of the 'repeat' loop.
    if theCount is equal to 100 then
        display dialog "All 100 messages have already been sent!" buttons {"OK"} default button 1
        exit repeat
    else if thisFileName is in theAlreadySentList then
        --  # Choose another file.
        set thisFileName to name of chooseRandomFileFrom(thisFolder)
    else
        --  # This file has not been used yet, process accordingly.
        --  #
        --  # Add the filename to the list.
        do shell script "echo " & thisFileName & " >> " & quoted form of theAlreadySentListFilename
        --  # Get the content of the Rich Text file.
        tell application "TextEdit"
            open thisFile
            activate
            delay 1 --# Adjust as necessary. Time must be given for the file to open before proceeding.
            set theMessageContent to text of front document
            close front document
        end tell
        --  # Create the Mail Message (and Send it).
        tell application "Mail"
            activate
            set theMessage to make new outgoing message with properties {visible:true, subject:theSubject, content:theMessageContent}
            tell theMessage
                make new to recipient at end of to recipients with properties {name:theRecipientName, address:theRecipientAddress}
            end tell
            -- delay 1 --# Adjust as necessary. Uncomment to use this command.
            -- send theMessage --   # Uncomment to use this command.
        end tell
        exit repeat
    end if
end repeat

NOTA: Si va a utilizar Texto sin formato de los archivos en lugar de la de Texto Enriquecido, archivos, a continuación, toda la tell application "TextEdit" bloque de código puede ser reemplazado con las siguientes dos líneas de código:

set thisFile to POSIX path of (thisFolder & ":" & thisFileName)
set theMessageContent to do shell script "cat " & quoted form of thisFile

Usted puede también cambiar el comentario de arriba, -- # Get the content of the Rich Text file., el intercambio de Rico con la Llanura.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: