Monday, December 9, 2019

#1 2011-10-13 09:31:55 pm

bluenote
Member
Registered: 2007-03-01
Posts: 77

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?

Applescript:


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

Offline

 

#2 2011-10-23 10:42:18 pm

bluenote
Member
Registered: 2007-03-01
Posts: 77

Re: ical calendars specify icloud list only?

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

Offline

 

#3 2011-10-23 11:47:24 pm

amabbett
Member
Registered: 2010-04-02
Posts: 14

Re: ical calendars specify icloud list only?

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.

Applescript:

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.

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)