MacOS – Create new (.url) file with url address as variable input

applescriptfindermacosmojave

I am looking for a way to create a new .url file in the current folder, but have an input field that allows me to enter the desired webaddress the file should link to. The whole process should be similar as to how windows handles the creation of a new shortcut, meaning it should as for the link address and then create the shortcut in the active folder.

Is there any way to realize this with Apple Script and / or Keyboard Maestro? This would be useful as I often find myself wanting to add .url files to folders.

Thanks!
A2k

EDIT:

So I managed to get the above somewhat working with the code below, but still face a couple of problems:
* the filename is hardcoded as "Shortcut.url". The script breaks though if the filename "shortcut.url" already exists
* the script breaks when pressing the "Cancel" button of the file dialog window. How can I address this scenario and add error handling?

tell application "Finder"
    try
        display dialog "Enter URL / IP Address below:" default answer ""
        set urlName to the text returned of result
        if length of urlName = 0 then
            return 0
        end if
        set fileExt to ".url"
        set thisFolder to the target of the front window as alias
        set newFile to "Shortcut" & fileExt

        make new file at thisFolder with properties {name:newFile, file type:"TEXT", creator type:"ttxt"}

        set tFile to open for access (thisFolder as text) & newFile with write permission
        try
            write ("
[InternetShortcut]
URL=" & urlName & "
IconIndex=0
            ") to tFile
            close access tFile
        on error
            close access tFile
        end try


    on error errMsg
        display dialog (errMsg)
    end try
end tell

Appreciate any help,
A2k

Best Answer

I wrote this thinking that you were looking to create the the Mac Version of a .URL file, which would be a .webloc file... But after reading your code, it seems my assumption was wrong. I put too much effort into my solution to just scrap it, so in the event that you need to automate the creation of .webloc files, in the future... Here you go

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

set theURL to text returned of (display dialog "Enter Desired URL" default answer ¬
    "https://stackexchange.com" buttons {"Cancel", "OK"} ¬
    default button "OK" cancel button "Cancel" with title "Enter Desired URL")

try
    tell application "Finder" to tell its window 1
        set theFolder to POSIX path of (target as alias)
    end tell
on error errMsg number errNum
    set theFolder to POSIX path of (choose folder)
end try

tell application "Finder"
    activate
    set theName to text returned of (display dialog "Enter Desired Name" default answer ¬
        "File Name" buttons {"Cancel", "OK"} ¬
        default button "OK" cancel button "Cancel" with title "Enter Desired Webloc File Name")
    set fileExists to exists of alias ((theFolder & theName) as POSIX file as text)
    repeat while fileExists is true
        activate
        set theName to text returned of (display dialog "A File With That Name Already Exixts. Please Choose A Different Name" default answer ¬
            "File Name" buttons {"Cancel", "OK"} ¬
            default button "OK" cancel button "Cancel" with title "Enter Desired Webloc File Name")
        set fileExists to exists of alias ((theFolder & theName) as POSIX file as text)
    end repeat
end tell

tell application "Finder" to make new internet location file at POSIX file theFolder to theURL with properties {name:theName}