ical calendars specify icloud list only?

when using below script, its supposed to update existing calendars (or create new ones). It works fine, but now the new calendars don’t sync with iCloud as its under a separate heading in the calendar list “On My Mac” as opposed to “iCloud”.

any ideas how to update the script so that when checking for existing calendars or creating new calendars, it applies to iCloud only calendars?


property summaryList : {"Rough Ceramics", "Tooling Quote", "Casting Ceramic", "Tooling PO", "Paint Photos (MASS)", "Package Info", "Production Quote", "Vendor Confirmed", "Paint Master", "Decals (MASS)", "Paint Photos (CL)", "Decals (CL)", "1st Shots (New Figures)", "EP Shots (Old Figures)", "Blister Layout", "PO Breakdown", "Mockups", "EP Shots (New Figures)", "1st Deco", "PO", "Packaging Files", "Chromalins", "Blister Release", "Injection Release", "Deco Release", "Press Proofs", "Printing Release", "PP"}

tell application "Microsoft Excel"
	set ProjectName to the value of cell "$B$2"
	set range_value_List to (get value of range "E4:E38")
	set range_value to {}
	repeat with i from 1 to (count range_value_List)
		set end of range_value to item 1 of (item i of range_value_List)
	end repeat
	set {RoughCeramics, blind, ToolingQuote, CastingCeramic, blind, ToolingPO, blind, PaintPhotosMASS, DieLines, ProductionQuote, VendorConfirmed, PaintMaster, DecalsMASS, DecalsCL, PaintPhotosCL, FirstShotsNew, EPShotsOld, BlisterLayout, POBreakdown, Mockups, EPShotsNew, firstDeco, PO, blind, blind, PackagingFiles, Chromalins, BlisterRelease, InjectionRelease, blind, DecoRelease, PressProofs, blind, PrintingRelease, PP} to range_value
	close front window
end tell

tell application "iCal"
	if not (exists calendar ProjectName) then
		tell (make new calendar at end of calendars with properties {name:ProjectName})
			set its color to {13500, 28500, 48500}
		end tell
	end if
	set dateList to {RoughCeramics, ToolingQuote, CastingCeramic, ToolingPO, PaintPhotosMASS, DieLines, ProductionQuote, VendorConfirmed, PaintMaster, DecalsMASS, DecalsCL, PaintPhotosCL, FirstShotsNew, EPShotsOld, BlisterLayout, POBreakdown, Mockups, EPShotsNew, firstDeco, PO, PackagingFiles, Chromalins, BlisterRelease, InjectionRelease, DecoRelease, PressProofs, PrintingRelease, PP}
	repeat with i from 1 to count summaryList
		set theDate to my calcDate(item i of dateList)
		set {theTodo, isCompleted} to my check_Todo(ProjectName, ((item i of summaryList) & " - " & ProjectName))
		if class of theDate is date then
			if theTodo is false then
				make new todo at end of todos of calendar ProjectName with properties {due date:theDate, description:ProjectName, summary:(item i of summaryList) & " - " & ProjectName}
			else
				if isCompleted is false then set due date of theTodo to theDate
			end if
		end if
	end repeat
end tell

on calcDate(d)
	if class of d is date then return d
	if d is "" or d is in {"N/A", "NA", "on hold"} then return false
	set delim to item (((d contains "/") as integer) + 1) of {".", "/"}
	set {TID, text item delimiters} to {text item delimiters, delim}
	try
		set {mn, dy, yr} to text items of d
		set yr to yr mod 1000 + 2000
		-- old line for above-- if yr as integer < 10 then set yr to (yr as integer) + 2000
		set text item delimiters to TID
		tell (current date) to set d to it - (its time)
		tell d to set {its day, its month, its year} to {dy as integer, mn as integer, yr as integer}
		return d
	on error
		set text item delimiters to TID
		return false
	end try
end calcDate

on check_Todo(cal, param)
	tell application "iCal"
		tell calendar cal
			repeat with tt in (get todos)
				tell contents of tt
					if summary begins with param then
						set c to completion date
						if c is missing value then
							return {it, false}
						else
							return {it, true}
						end if
					end if
				end tell
			end repeat
		end tell
		return {false, false}
	end tell
end check_Todo

no thoughts on how to specify an “iCloud” calendar as opposed to a “On My Mac” calendar?

I know it sounds a little stupid but you could add an if statement to your script, and choose the calendar from a list. When I use the following statement script I’m abale to get a complete list of all my calendars.

tell application "iCal"
	set theCalendarNames to title of every calendar --theCalendarNames is a list
end tell
set theCalenderChosen to (choose from list theCalendarNames with prompt " Please choose a calendar :") as string

Maybe that will help. If not good luck.