Maybe this script may help.
--
--[SCRIPT insertCSV_inNumbers]
(*
Enregistrer le script en tant que Script : insertCSV_inNumbers.scpt
déplacer le fichier ainsi créé dans le dossier
<VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:
copiez vos données depuis la page source
menu Scripts > Numbers > insertCSV_inNumbers
Après conversion, les données seront insérées dans la table active de Numbers..
--=====
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.
(* à vérifier avec Snow Leopard *)
Cochez la case "Afficher le menu des scripts dans la barre de menus".
--=====
Save the script as Script : insertCSV_inNumbers.xxx
Move the newly created file into the folder:
<startup Volume>:Users:<yourAccount>:Library:Scripts:
copy datas from the source page
menu Scripts > Numbers > insertCSV_inNumbers
After conversion, the datas will be inserted in the active table in Numbers.
--=====
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.
--=====
Yvan KOENIG (VALLAURIS, France)
2009/12/17
*)
--=====
property liste : {}
property liste2 : {}
on run
my nettoie()
set enTexte to the clipboard as text
if enTexte contains ";" then
set delim to ";"
else
set delim to ","
end if
set my liste to paragraphs of enTexte
set {dName, sName, tName, rname, rowNum1, colNum1, rowNum2, colNum2} to my getSelParams()
tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
set rowMax to count rows
set colMax to count columns
set nbRows to count of liste
if rowNum1 - 1 + nbRows > rowMax then
repeat rowNum1 - 1 + nbRows - rowMax times
add row below last row
end repeat
set rowMax to count rows
end if -- nbRows + …
repeat with r from 1 to nbRows
set my liste2 to my decoupe(item r of my liste, delim)
set nbCols to count of my liste2
if colNum1 - 1 + nbCols > colMax then
repeat colNum1 - 1 + nbCols - colMax times
add column after last column
end repeat
set colMax to count columns
end if -- nbCols + …
tell row (rowNum1 + r - 1)
repeat with c from 1 to nbCols
set value of cell (colNum1 + c - 1) to (item c of my liste2) as text
end repeat -- c
end tell -- row …
end repeat -- r
end tell -- Numbers …
my nettoie()
end run
--=====
on nettoie()
set my liste to {}
set my liste2 to {}
end nettoie
--=====
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 17 décembre 2009 20:32:30