0 votos

¿Cómo puedo enviar automáticamente un correo electrónico (con un archivo adjunto) a los destinatarios cuando se agregue un archivo xlsx con su dirección a una carpeta?

Estoy usando macOS 14.6.1 y Outlook 16.89.3. No puedo encontrar una respuesta a esta pregunta en el foro.

Estoy intentando crear un servicio/script de acciones de carpeta para monitorear una carpeta en particular en busca de nuevos archivos de Excel (solo se agregarían archivos de Excel a esta carpeta de todos modos) y, cuando se agregue un archivo, enviar ese archivo, a través de Outlook, al usuario cuya dirección de correo electrónico se encuentra en la celda B2 de la hoja de cálculo.

He intentado usar chatgpt para esto. Me da un script que funciona cuando se usa Apple Mail, pero no con Outlook.

Aquí tienes un ejemplo de lo que chatgpt dice que debería usar... que sigue fallando. Cuando arrastro un archivo a la carpeta, veo que el pequeño icono de engranaje gira en la barra de menú, pero no aparecen cuadros de diálogo, no hay mensajes de error y no se crean/envían correos electrónicos en Outlook.

al añadir elementos de carpeta a esta_carpeta después de recibir elementos_agregados
     repetir con elemento_agregado en elementos_agregados
         establecer rutaArchivo a ruta POSIX de elemento_agregado
         -- Verificar si el archivo es un archivo de Excel
         si la rutaArchivo termina con ".xlsx" then
             mostrar diálogo "Archivo agregado: " & (nombre de elemento_agregado) -- Mensaje de depuración
             intentar
                 -- Abrir el archivo de Excel para leer la dirección de correo electrónico
                 decir aplicación "Microsoft Excel"
                     abrir rutaArchivo
                     retraso 1 -- Esperar a que Excel se abra
                     establecer correoDestinatario a valor de celda "B2" de la hoja_activa
                     cerrar libro activo guardando no -- Cerrar el libro sin guardar
                 end decir

                 -- Asegurarse de que correoDestinatario sea válido
                 si correoDestinatario no es valor perdido entonces
                     -- Preparar el correo electrónico
                     decir aplicación "Microsoft Outlook"
                         establecer nuevoMensaje a hacer nuevo mensaje saliente con propiedades {asunto:"Su Archivo de Excel Solicitado", contenido:"Hola,\n\nPor favor, encuentre el archivo de Excel solicitado adjunto.\n\nSaludos cordiales,\nTu Nombre"}
                         hacer nuevo destinatario en nuevoMensaje con propiedades {dirección de correo electrónico:{dirección:correoDestinatario}}
                         hacer nuevo archivo adjunto en nuevoMensaje con propiedades {archivo:elemento_agregado}
                         enviar nuevoMensaje
                     end decir
                 else
                     mostrar diálogo "No se encontró dirección de correo electrónico en la celda B2 de " & (nombre de elemento_agregado)
                 end if
             on error errMsg
                 mostrar diálogo "Error al procesar el archivo: " & errMsg
             fin intentar
         end if
     fin repetir
 fin añadiendo elementos de carpeta a

Gracias por tu tiempo.

0voto

red_menace Puntos 111

Las acciones de carpeta fallarán silenciosamente, y la declaración del problema

   display dialog "Archivo agregado: " & (nombre del ítem agregado)

dará error porque AppleScript no conoce las propiedades de los archivos, y está fuera del manejo de errores del script (la declaración try). Finder (o System Events) son las aplicaciones normalmente utilizadas para manejar archivos, así que necesitas pedirle a una de ellas que obtenga el nombre del archivo. En tu script publicado, por ejemplo, puedes agregar una declaración para obtener el nombre del archivo:

   set filePath to ruta POSIX de ítem_agregado -- declaración existente
   tell application "Finder" to set nombre_archivo to (nombre de ítem agregado) -- nueva declaración

...luego reemplaza todas las ocurrencias de (nombre del ítem agregado) con nombre_archivo.

No uso Excel ni Outlook para hacer más pruebas, pero una forma útil de probar manualmente tus acciones de carpeta es dividir la funcionalidad en su propio controlador para que también pueda ejecutarse desde el editor o como un droplet. Por ejemplo:

on run -- ejecutar desde el Editor de Scripts o al hacer doble clic en la aplicación
   hacerCosas para (elegir archivo con selecciones múltiples permitidas)
end run

on open theFiles -- ítems arrastrados al droplet
   hacerCosas para theFiles
end open

on adding folder items to this_folder after receiving these_items -- acción de carpeta
   hacerCosas para these_items
end adding folder items to

to hacerCosas para algunosArchivos -- la función principal
    repeat with ítem_agregado in algunosArchivos
        set filePath to ruta POSIX de ítem_agregado
        -- Verificar si el archivo es un archivo de Excel
        if filePath termina con ".xlsx" then
            tell application "Finder" to set nombre_archivo to (nombre de ítem agregado)
            display dialog "Archivo agregado: " & nombre_archivo -- Mensaje de depuración
            try
                -- Abrir el archivo de Excel para leer la dirección de correo electrónico
                tell application "Microsoft Excel"
                    open filePath
                    delay 1 -- Esperar a que Excel se abra
                    set direcciónEmail to valor de celda "B2" de la hoja activa
                    close active workbook saving no -- Cerrar el libro sin guardar
                end tell

                -- Asegurar que direcciónEmail sea válida
                if direcciónEmail no es valor faltante then
                    -- Preparar el email
                    tell application "Microsoft Outlook"
                        set nuevoMensaje to make new outgoing message with properties {subject:"Tu Archivo de Excel Solicitado", content:"Hola,\n\nPor favor encuentra adjunto el archivo de Excel solicitado.\n\nSaludos cordiales,\nTu Nombre"}
                        make new recipient at nuevoMensaje with properties {email address:{address:direcciónEmail}}
                        make new attachment at nuevoMensaje with properties {file:ítem_agregado}
                        send nuevoMensaje
                    end tell
                else
                    display dialog "No se encontró dirección de correo en la celda B2 de " & nombre_archivo
                end if
            on error errMsg
                display dialog "Error procesando el archivo: " & errMsg
            end try
        end if
    end repeat
end hacerCosas

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:

X