Here is a handler which I used for years with iWork '09.
#=====
(*
set { leDocument, laFeuille, laTable, lIntervalle} to my getSelection()
*)
on getSelection()
local _, l_Intervalle, la_Table, la_Feuille, le_document, errmsg, ernum_Ligne
tell application "/Applications/iWork '09/Numbers.app" to tell document 1
repeat with i from 1 to the count of every sheet
tell sheet i
set x to the count of every table
if x > 0 then
repeat with y from 1 to x
try
(selection range of table y) as text
on error errmsg number ernum_Ligne
set {_, l_Intervalle, _, la_Table, _, la_Feuille, _, le_document} to my decoupe(errmsg, quote)
return {le_document, la_Feuille, la_Table, l_Intervalle}
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 oTIDs, l
set {oTIDs, AppleScript's text item delimiters} to {AppleScript's text item delimiters, d}
set l to text items of t
set AppleScript's text item delimiters to oTIDs
return l
end decoupe
#=====