AppleScript add new filename and path in mail only when files extension are .pdf and .doc

applescript

I have a Mac running macOS Mojave.

this script sends a mail to multiples user when someone adds a new file in my folder.

How can I add the filename in the mail Subject and the path file in the mail body?
How can I apply this action only when the file extension are .pdf or .doc?

here is my script:

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.

on adding folder items to this_folder after receiving added_items
try
    tell application "Finder"
        --get the name of the folder
        set the folder_name to the name of this_folder
    end tell

    -- find out how many new items have been placed in the folder
    set the item_count to the number of items in the added_items
    --create the alert string
    set alert_message to ("Folder Actions Alert:" & return & return) as Unicode text
    if the item_count is greater than 1 then
        set alert_message to alert_message & (the item_count as text) & " new items have "

    else
        set alert_message to alert_message & "One new item has "
    end if


    set recipientName to "New file added"
    set recipientAddress to "user1@gmail.com, user2@gmail.com"
    set theSubject to "new file" & fileName
    set theContent to "¡Hello! new file added: pathName fileName"

    tell application "Mail"

        ##Create the message
        set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}

        ##Set a recipient
        tell theMessage
            make new to recipient with properties {name:recipientName, address:recipientAddress}

            ##Send the Message
            send

        end tell
    end tell

end try
end adding folder items to

I try many times to use this example, but was impossible:
Applescript to return name of new file added to folder

Thanks so much in advance!

Best Answer

This works for me using the latest version of macOS Mojave.

I made some adjustments for you and added a few items to your code. You may need to adjust a few things to better suit your needs, but for now I think the following code should put you back on the right track:

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.
property name_extensions : {"pdf", "doc"}

on adding folder items to this_folder after receiving added_items
    set files_added to {}
    set file_names to {}
    tell application "Finder" to set folder_name to the name of this_folder
    repeat with i from 1 to count of added_items
        set this_Item to item i of added_items
        tell application "Finder"
            if name extension of this_Item is in name_extensions then
                set end of files_added to (this_Item & linefeed)
                set end of file_names to " " & name of this_Item & " "
            end if
        end tell
    end repeat

    -- find out how many new items have been placed in the folder
    set the item_count to count of added_items
    --create the alert string
    set alert_message to ("Folder Actions Alert:" & return & return) as Unicode text

    if the item_count is greater than 1 then
        set alert_message to alert_message & (the item_count as text) & " New items have been added"
    else
        set alert_message to alert_message & "One new item has been added"
    end if

    if files_added is {} then
        activate
        display alert alert_message giving up after dialog_timeout
        return
    else
        try
            set recipientName to ""
            set recipientAddress to "user1@gmail.com, user2@gmail.com"
            set theSubject to "new file: " & file_names
            set theContent to "¡Hello! new file added: " & linefeed & linefeed & files_added

            tell application "Mail"
                ##Create the message
                set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
                ##Set a recipient
                tell theMessage
                    make new to recipient with properties {name:recipientName, address:recipientAddress}
                    ##Send the Message
                    send
                end tell
            end tell
        end try
        activate
        display alert alert_message giving up after dialog_timeout
    end if
end adding folder items to

UPDATE:

In this following version of the updated code, I removed all of the “Display Alert” commands and variables. This version will send an email to you with the names of all of the files and the path of the files. It will also send an email to the addresses of your recipient list, with the name of the files and the path of the files (only if the file extensions are .pdf or .doc)


property myEmail : "fireDevelop@gmail.com" -- Replace With Your Email Address
property sendToEmailAddress : "user1@gmail.com , user2@gmail.com"
property name_extensions : {"pdf", "doc"}

on adding folder items to this_folder after receiving added_items
    set files_added_filtered to {}
    set file_names_filtered to {}
    set files_added to {}
    set file_names to {}

    repeat with i from 1 to count of added_items
        set this_Item to item i of added_items
        tell application "Finder"
            set end of files_added to (this_Item & linefeed)
            set end of file_names to " " & name of this_Item & " "
            if name extension of this_Item is in name_extensions then
                set end of files_added_filtered to (this_Item & linefeed)
                set end of file_names_filtered to " " & name of this_Item & " "
            end if
        end tell
    end repeat

    if files_added_filtered is {} then
        try
            set recipientName to ""
            set recipientAddress to myEmail
            set theSubject to "new file: " & file_names
            set theContent to "¡Hello! new file added: " & linefeed & linefeed & files_added

            tell application "Mail"
                set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
                tell theMessage
                    make new to recipient with properties {name:recipientName, address:recipientAddress}
                    send
                end tell
            end tell
        end try
        return
    else
        try
            set recipientName to ""
            set recipientAddress to sendToEmailAddress
            set theSubject to "new file: " & file_names_filtered
            set theContent to "¡Hello! new file added: " & linefeed & linefeed & files_added_filtered

            tell application "Mail"
                set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
                tell theMessage
                    make new to recipient with properties {name:recipientName, address:recipientAddress}
                    send
                end tell
            end tell
        end try
        try
            set recipientName to ""
            set recipientAddress to myEmail
            set theSubject to "new file: " & file_names
            set theContent to "¡Hello! new file added: " & linefeed & linefeed & files_added

            tell application "Mail"
                set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
                tell theMessage
                    make new to recipient with properties {name:recipientName, address:recipientAddress}
                    send
                end tell
            end tell
        end try
    end if
end adding folder items to