Hey Guys,
I’ll be honest, I’m a near total AppleScript newb. I’ve been trying to learn AppleScript through a number of small scripting projects that i was hoping to collate into one larger script that would be expandable to my personal needs.
I have 2 scripts that i would like to merge, one that posts to twitter using Twurl and the other that allows me to send messages from my iPhone to my mac and my mac will a reply back (with a filter to check if the message was from me).
I found the basic skeletons for both scripts on the internet then modified them to my needs (I did try to write my own full versions first but couldn’t do it without a basic skeleton to give me hints at how the commands interact)
My problem is being able to merge the scripts together, so an off shoot of my twitter script can be packed into an if statement in my other script, so if I say “Tweet Hello Twitter!” it will check for the word “Tweet” and execute a command to remove the "Tweet " part of my message and then post the rest to twitter. the problem is, every time i try and add the twitter script to my message script the Applescript editor refuses to compile the code due to myself being unable to use the correct syntax.
I’ve tried looking for information on the syntax but I couldnt find a remedy to my problem. If someone could explain where I am going wrong that would be a big help, as I have many little scripts that i have written since and would like to add to this one messaging script.
Both Scripts work fine independently, though i have removed some of the twitter script here (dialog boxes etc, as in this scenario i wouldnt need them)
here is the code i have managed to bundle together:
property Myself : {" "} -- This property handles all my personal information for my message filter. This includes my name, phone number and email address. (removed for privacy reasons)
--Twitter Details
property theAccount : " " -- this is where I enter my twitter acc name.
property theApp : " " -- the name of my twitter "app" that i registered with twitter so i could use twurl
using terms from application "iChat"
on message received theMessage from theBuddy for theChat
-- if the message is from myself
if (handle of theBuddy) is in Myself then
-- then send the message on to be processed by the if statement
check(theMessage, theBuddy, theChat)
end if
end message received
end using terms from
--process messages received in ichat
on check(theMessage, theBuddy, theChat)
tell application "iChat"
-- if the message is hello
if theMessage contains "Hello jarvis" or theMessage contains "Hi jarvis" then
-- then return the greeting
try
send ("Hi there, " & ((name of theBuddy) as string)) to theChat
end try
return
end if
--heres where things go wrong :/
if theMessage contains "Tweet " then
try
set theMessage to tweet's replaceText("Tweet", "", theMessage) -- this following snippet *should* remove the "Tweet " part of my original message to just leave the Tweet to be sent.
replaceText(find, replace, someTweet)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to find
set someTweet to text items of someTweet
set text item delimiters of AppleScript to replace
set someTweet to "" & someTweet
set text item delimiters of AppleScript to prevTIDs
set AppleScript's text item delimiters to ""
return someTweet as string --found this snippet on the internet, I don't know if it works though.
-- heres where I pasted my script (ive tried using try, run, no command here, everything ive seen before in scripts and tutorials that could work >.<
-- This tells twurl what account to use
set theResult to (do shell script "twurl set default " & theAccount)
set theTweet to someTweet
-- Checking tweet length due to the restriction
on checkLength(theMessage)
if length of theMessage is less than or equal to 140 then
postTweet(theTweet)
end if
end checkLength
-- Posting to Twitter API
on postTweet(theTweet)
set theContent to quoted form of ("source=" & theApp & "&status=" & theTweet)
set TwitterUpdate to "twurl -d " & theContent & " /1/statuses/update.xml"
set TwitterResponse to do shell script TwitterUpdate
end postTweet
on error msg
return "Error: " & msg
end try
end if
end tell
end check
If anyone could tell me where I am going wrong or any code optimizations I would be forever grateful!
John