Skip to main content
Question

Applescript to display message weekly?


Forum|alt.badge.img+1

Hello,

I am trying to deploy a script that will ask users if they've filled out and submitted their time sheet. If they click Yes, the message goes away. If they click No, it launches Safari and brings it to the front.

I can get it to run on my machine just fine, but when I try to deploy it via Casper Remote or a policy, I get an error saying that "<" is an invalid character. In the very short script, I've quadruple checked, and can't find a < character at all. Can anyone offer any help as to what's going on?

For reference, here's the script (website it goes to has been changed for privacy):

display dialog "Have you completed your timesheet?" buttons {"Yes", "No"} default button 2
if the button returned of the result is "No" then
    tell application "Safari" to open location "http://google.com/"
    tell application "Safari"
        activate
    end tell
else
    null
end if

If anyone has any tips as to what I can do to make this work, I'd greatly appreciate it!

11 replies

rob_potvin
Forum|alt.badge.img+23
  • Employee
  • 209 replies
  • October 9, 2012

You could just use jamfhelper for this!!

Can give you a hand on writing this if you need it :)


rob_potvin
Forum|alt.badge.img+23
  • Employee
  • 209 replies
  • October 9, 2012

To add to this, would be cool to create this website as an app with fluid and then have it open the app on launch.


rob_potvin
Forum|alt.badge.img+23
  • Employee
  • 209 replies
  • October 9, 2012

Cheers mate hope this helps

#!/bin/sh
jamfcheck="/usr/sbin/jamf"
# now check if it exists
if [[ -e $jamfcheck ]]
    then
        /bin/echo "JAMF binary present, continuing as planned..."
    else
        /bin/echo "JAMF binary is not present, we need to halt"
    exit 55
fi
    #edit your message here and add your icon here
    /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -icon "/icons/timesheet.png" -heading "TimeSheet" -description "Have you completed your timesheet?" -button1 "No" -button2 "Yes" -defaultButton 1  -cancelButton 2

if [ $? -eq 0 ]
    then
    #open your location here or even create your own web app with Fluid and have that open here.
    open "http://google.com/"
else 
    #If they filled it out another thanks you message....
    /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -heading "Thank You" -description "Remember, it is important that you fill out your timesheet" -button1 "OK" &
    exit 0
fi

Forum|alt.badge.img+6
  • Contributor
  • 79 replies
  • October 9, 2012

Sweet scrip to annoy all the late time sheet users!


rob_potvin
Forum|alt.badge.img+23
  • Employee
  • 209 replies
  • October 9, 2012

I use the same script to remind the teachers that they should update, just have a smart list if there is more then 5 updates available to run software update via self service. They love me


Forum|alt.badge.img+10
  • Valued Contributor
  • 229 replies
  • October 10, 2012

Hello and many thanks for the script, very useful!
Just a question: Is there a reason why it works perfectly here on 10.6 clients with (AD) network accounts while - for Macs with 10.7/10.8 - it only works wihile being logged as the local admin and it apparently stops after opening the first window with network accounts (clicking "yes/no" does nothing)?

I tried both with a scheduled policy and from Casper Remote and would think it's because of some security reason/script run as logged in user.

Thank you again!
Carlo

Running script Reminder_Timesheet.sh...
Script exit code: 1
Script result: JAMF binary present, continuing as planned...
LSOpenURLsWithRole() failed with error -10810 for the URL http://timesheet.html


rob_potvin
Forum|alt.badge.img+23
  • Employee
  • 209 replies
  • October 10, 2012

Just put a sudo in front of the jamfHelper line, that should work then since it would be run as root and not the user

sudo /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -icon "/icons/timesheet.png" -heading "TimeSheet" -description "Have you completed your timesheet?" -button1 "No" -button2 "Yes" -defaultButton 1  -cancelButton 2

Forum|alt.badge.img+10
  • Valued Contributor
  • 229 replies
  • October 10, 2012

Not even putting sudo worked...
I ended up scheduling a LaunchDaemon that calls the below Applescript (saved as app copied to the clients), as this too gave me the same error if called by a policy...

Thanks for the suggestion!
Ciao
Carlo

try set the IP_address to "put the IP of your timesheet server" do shell script ("ping -c 2 " & IP_address) activate display dialog "Have you completed your timesheet?" buttons {"Yes", "No"} default button 2 if the button returned of the result is "No" then tell application "Safari" to open location "http://Timesheet.html" tell application "Safari" activate end tell else display dialog "Thank you for your cooperation" & return & return & ¬ "Remember, it is important that you fill out your timesheet." buttons {"OK"} default button 1 end if on error quit script end try

Forum|alt.badge.img+18
  • Valued Contributor
  • 1007 replies
  • October 10, 2012

run it as a launch agent. that runs as the user, launch daemons run as root, and applescript is less than convenient to run as root because of security enhancements


Forum|alt.badge.img+31
  • Honored Contributor
  • 2721 replies
  • October 10, 2012

I've posted this before, but here you go again. It is a proof of concept, to run an apple script from bash and have user interaction. You can also always use jamfhelper as well. All you would need to do is change the manual triggers at the bottom of the if/then logic.

#!/bin/bash

# proof of concept AppleScript interaction to end user in bash

theAnswer=$(/usr/bin/osascript <<AppleScript
tell application "Finder"
 activate
 display dialog "Do you want to know the meaning of the universe?" buttons {"No","Yes"} default button 2
  if the button returned of the result is "No" then
   set theAnswer to No
  end if
end tell
AppleScript)

/bin/echo "${theAnswer}"

if [[ ${theAnswer} == "no" ]]

  then /bin/echo "They obviously have read the Hitcherhiker's Guide and know it is 42"
  else /bin/echo "The Answer is 42"
fi

exit 0

Just test before you deploy.

Thanks,
Tom


andymason
Forum|alt.badge.img+4
  • Contributor
  • 10 replies
  • January 19, 2023
rob_potvin wrote:

Cheers mate hope this helps

#!/bin/sh
jamfcheck="/usr/sbin/jamf"
# now check if it exists
if [[ -e $jamfcheck ]]
    then
        /bin/echo "JAMF binary present, continuing as planned..."
    else
        /bin/echo "JAMF binary is not present, we need to halt"
    exit 55
fi
    #edit your message here and add your icon here
    /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -icon "/icons/timesheet.png" -heading "TimeSheet" -description "Have you completed your timesheet?" -button1 "No" -button2 "Yes" -defaultButton 1  -cancelButton 2

if [ $? -eq 0 ]
    then
    #open your location here or even create your own web app with Fluid and have that open here.
    open "http://google.com/"
else 
    #If they filled it out another thanks you message....
    /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -heading "Thank You" -description "Remember, it is important that you fill out your timesheet" -button1 "OK" &
    exit 0
fi

Have you tested this script in Ventura?


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings