Here is the script doing the trick with Numbers '09.
--
--[SCRIPT createical_events_fromNumbers'09]
(*
Enregistrer le script en tant que Script : createical_events_fromNumbers'09.scpt
déplacer le fichier ainsi créé dans le dossier
<VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:Applications:Numbers:
Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
Sélectionner les cellules d'une table de Numbers qui décrivent des 'events'
La table est censée contenir:
une colonne avec la description des événements
une colonne avec les date_heures de début
une colonne avec les date_heures de fin
Éditer la property 'theCalendar' en fonction du nom du calendrier à alimenter.
menu Scripts > Numbers > createical_events_fromNumbers'09
Le script crée les évènements dans iCal
--=====
L'aide du Finder explique:
L'Utilitaire AppleScript permet d'activer le Menu des scripts :
Ouvrez l'Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
Cochez la case "Afficher le menu des scripts dans la barre de menus".
--=====
Save the script as a Script: createical_events_fromNumbers'09.scpt
Move the newly created file into the folder:
<startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
In a table from Numbers '09,
select cells describing 'events'.
This table is supposed to embed :
a column storing events descriptions
a column storind start datetime
a column storing end datetime.
Edit the instruction defining the calendar name to fit your needs.
menu Scripts > Numbers > createical_events_fromNumbers'09
The script will create new events in iCal.
--=====
The Finder's Help explains:
To make the Script menu appear:
Open the AppleScript utility located in Applications/AppleScript.
Select the "Show Script Menu in menu bar" checkbox.
This script creates new events from the content of selected cells from a Numbers '09 table.
--=====
example:
event #1 18 avr. 2010 05:35 19 avr. 2010 15:35
event #2 19 avr. 2010 05:35 20 avr. 2010 15:35
event #3 20 avr. 2010 05:35 21 avr. 2010 15:35
event #4 21 avr. 2010 05:35 22 avr. 2010 15:35
--=====
Yvan KOENIG (VALLAURIS, France)
2010/03/25
.
*)
--=====
property theCalendar : "Personnel"
property nbItemsPerEvent : 3
--=====
on run
set {dName, sName, tName, rname, rowNum1, colNum1, rowNum2, colNum2} to my getSelParams()
set colNum2 to colNum1 + nbItemsPerEvent - 1
tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
repeat with r from rowNum1 to rowNum2
set eProps to {}
repeat with c from colNum1 to colNum2
copy (value of cell r of column c) to end of eProps
end repeat -- with column
(*
Now, eProps contains
- the event description
- the start date_time
- the end date_time
*)
my makeEvent(eProps)
end repeat
end tell -- Numbers
end run
--=====
on makeEvent({descr, sDate, eDate})
tell application "iCal"
make new event at the end of events of (every calendar whose name is theCalendar) with properties {description:descr, start date:sDate as text, end date:eDate as text, allday event:true}
end tell
end makeEvent
--=====
on getSelParams()
local r_Name, t_Name, s_Name, d_Name, col_Num1, row_Num1, col_Num2, row_Num2
set {d_Name, s_Name, t_Name, r_Name} to my getSelection()
if r_Name is missing value then
if my parleAnglais() then
error "No selected cells"
else
error "Il n'y a pas de cellule sélectionnée !"
end if
end if
set two_Names to my decoupe(r_Name, ":")
set {row_Num1, col_Num1} to my decipher(item 1 of two_Names, d_Name, s_Name, t_Name)
if item 2 of two_Names = item 1 of two_Names then
set {row_Num2, col_Num2} to {row_Num1, col_Num1}
else
set {row_Num2, col_Num2} to my decipher(item 2 of two_Names, d_Name, s_Name, t_Name)
end if
return {d_Name, s_Name, t_Name, r_Name, row_Num1, col_Num1, row_Num2, col_Num2}
end getSelParams
--=====
(*
set {rowNumber, columnNumber} to my decipher(cellRef,docName,sheetName,tableName)
apply to named row or named column !
*)
on decipher(n, d, s, t)
tell application "Numbers" to tell document d to tell sheet s to tell table t to return {address of row of cell n, address of column of cell n}
end decipher
--=====
(*
set { d_Name, s_Name, t_Name, r_Name} to my getSelection()
*)
on getSelection()
local _, theRange, theTable, theSheet, theDoc, errMsg, errNum
tell application "Numbers" to tell document 1
repeat with i from 1 to the count of sheets
tell sheet i
set x to the count of tables
if x > 0 then
repeat with y from 1 to x
try
(selection range of table y) as text
on error errMsg number errNum
set {_, theRange, _, theTable, _, theSheet, _, theDoc} to my decoupe(errMsg, quote)
return {theDoc, theSheet, theTable, theRange}
end try
end repeat -- y
end if -- x>0
end tell -- sheet
end repeat -- i
end tell -- document
return {missing value, missing value, missing value, missing value}
end getSelection
--=====
on decoupe(t, d)
local l
set AppleScript's text item delimiters to d
set l to text items of t
set AppleScript's text item delimiters to ""
return l
end decoupe
--=====
on parleAnglais()
local z
try
tell application "Numbers" to set z to localized string "Cancel"
on error
set z to "Cancel"
end try
return (z is not "Annuler")
end parleAnglais
--=====
--[/SCRIPT]
--
Yvan KOENIG (VALLAURIS, France) jeudi 25 mars 2010 22:50:17