Degrees/minutes/seconds

Has anyone figured out how to format cells using a degrees/minutes/seconds format? It seems Number Inspector does everything but that; is there a custom format someone's designed?

Thanks -

iMac, Mac OS X (10.5.7)

Posted on May 23, 2009 1:34 PM

Reply
10 replies

May 24, 2009 6:18 PM in response to NYC Matt 11

the problem is that the "hours" field is limited, at most, to 0-24...


I see the problem... I had only tested entries with degree (hour) values greater than 24 and it works as expected. Angle entries smaller than 24 degrees are interpreted as time on a 24-hour clock, unless they are the result of a subtraction with a beginning angle greater than 24 degrees.

May 25, 2009 6:10 AM in response to Brie Fly

Maybe this script may help:

--[SCRIPT formatDegrees]

(*
Enregistrer le script en tant que Script, Application ou Progiciel : formatDegrees.xxx
déplacer le fichier 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électionnez les cellules contenant les angles à convertir (dans une colonne).
menu Scripts > Numbers > formatDegrees
Les angles seront affichés au format d° m' s" dans les cellules adjacentes à droite
+++++++
Save the script as Script, Application or Application Bundle: formatDegrees.xxx
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.
Select the range of cells containing angles to convert (in a single column).
menu Scripts > Numbers > formatDegrees
The angles will be diplayed in format d° m' s" in cells adjacents on the right.
Yvan KOENIG (Vallauris, FRANCE)
25 mai 2009
*)
--=====
on run

set {dName, sName, tName, rname, rowNum1, colNum1, rowNum2, colNum2} to my getSelParams()
if colNum2 = colNum1 then set colNum2 to colNum1 + 1
tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
repeat with y from rowNum1 to rowNum2
set value of cell y of column colNum2 to my (value of cell y of column colNum1)
end repeat
end tell
end run
--=====
on degreesMinutesSeconds(x)
repeat until x < 360
set x to x - 360
end repeat
set deg to x div 1
set x to (x - deg) * 60
set min to x div 1
set x to (x - min) * 60
set sec to x div 1
return (deg as text) & "° " & min & "’ " & sec & "”"
end degreesMinutesSeconds
--=====
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("Numbers") 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
--=====
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
--=====
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(a)
local z
try
tell application a 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 (from FRANCE lundi 25 mai 2009 15:10:42)

May 25, 2009 4:02 PM in response to Brie Fly

I do not understand. The duration format 0:00:00 appears to work fine for display of degrees:minutes:seconds if you don't mind the colon format. I would not use any" date & time" formats because they append a date (whether you want it or not) and that can result in wacky answers if you do math with data entered on different days.

May 29, 2009 1:58 AM in response to NYC Matt 11

CAUTION

In my script I forgot to take care of TIME TO GMT offset.

here is a corrected version.

--[SCRIPT date2duration]

(*
Enregistrer le script en tant que Script, Application ou Progiciel : date2duration.xxx
déplacer le fichier 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électionnez les cellules à modifier.
menu Scripts > Numbers > date2duration
Le script remplacera les durées stockées sous forme de date_time en vraies durées.
--=====
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 Script, Application or Application Bundle: date2duration.xxx
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.
Select the range of cells to modify.
menu Scripts > Numbers > date2duration
The script will change the time_values into durations.
--=====
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)
28 mai 2009
*)
property theApp : "Numbers"
--=====
on run
my activateGUIscripting()
set {dName, sName, tName, rname, rowNum1, colNum1, rowNum2, colNum2} to my getSelParams()
(*
Here we know the starting point of the destination area. *)
tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
repeat with x from colNum1 to colNum2
tell column x
repeat with y from rowNum1 to rowNum2
set oldVal to value of cell y
if class of oldVal is date then
set value of cell y to my date2duration(value of cell y)
end if
end repeat
end tell -- column x
end repeat
end tell
end run
--=====
on date2duration(dd) (*
dd is a date *)
local lHeure, lesSecondes, lesMinutes
set lHeure to (time of dd) - (time to GMT)
set lesSecondes to (lHeure mod 60)
set lHeure to round (lHeure div 60)
set lesMinutes to (lHeure mod 60)
set lHeure to round (lHeure div 60)
return (lHeure as text) & "h " & lesMinutes & "m " & lesSecondes & "s"
end date2duration
--=====
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
--=====
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
--=====
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 theApp to set z to localized string "Cancel"
on error
set z to "Cancel"
end try
return (z is not "Annuler")
end parleAnglais
--=====
on activateGUIscripting()
tell application "System Events"
if not (UI elements enabled) then set (UI elements enabled) to true (* to be sure than GUI scripting will be active *)
end tell
end activateGUIscripting
--=====
(*
==== Uses GUIscripting ====
*)
on shortCut(a, t, d)
local k
tell application a to activate
tell application "System Events" to tell application process a
repeat with k in t
if d = "c" then
keystroke (k as text) using {command down}
else if d contains "c" then
if d contains "s" then
if d contains "k" then
keystroke (k as text) using {command down, shift down, control down}
else
keystroke (k as text) using {command down, shift down}
end if
else if d contains "k" then
keystroke (k as text) using {command down, control down}
end if
end if
end repeat
end tell
end shortCut
--=====
--[/SCRIPT]


Yvan KOENIG (from FRANCE vendredi 29 mai 2009 10:57:59)

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Degrees/minutes/seconds

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.