Here is an other one.
Read carefully the explanations given at the very beginning, in French then in English.
With this one you master the time when you save. CAUTION, Autosave is unable to do it's duty when you work on a document open with the script so don't forget to ask the script to save from time to time.
--(SCRIPT Pages_without_autosave]
(*
Enregistrer le script en tant qu'application sur le Bureau.
Glisser une icône de document Pages sur l'icône de l’application
ouvre le document, le duplique, ferme l'original renomme la copie en ajoutant l'information date_heure
crée un bloc texte afin d'y stocker le chemin d'accès au dossier source et le nom court du document original.
Travailler sur le document et de temps à autres, cliquer sur l'cône du script application afin d'enregistrer
le document et repartir avec une copie qui n'ayant jamais été enregistré ne sera pas autoenregistré.
Bien entendu, quand vous aurez fini de travailler sur le document il vous faudra l'enregistrer comme autrefois.
--=====
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 an application on the Desktop.
Drop a Pages doc icon on the application's one, open the document, duplicate it, save the original if it was created from a template,
rename the duplicate inserting a date_time stamp, create a text box store the pathname to the source folder and the short name of the original.
After that you may work upon the document. From time to time, click the script's icon to save the document
and replace it by a fresh replicate. So this one which was never saved will not be autosaved.
When you have finished to work upon the doc, save it as you did in the past.
--=====
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)
2011/08/22
*)
property permitted : {"com.apple.iWork.Pages.pages", "com.apple.iWork.Pages.sffpages"}
property modeles : {"com.apple.iWork.Pages.template", "com.apple.iWork.Pages.sfftemplate"}
property boxName : "pathname_shortname_emantrohs_emanhtap"
--=====
on run
local docName, path_infos, docFolder, nomCourt, docPath, nbd
my controle_versions()
(*
Grab infos about the frontmost Pages document *)
tell application "Pages"
set docName to name of document 1
tell document docName
(*
Try to extract the infos stored by the open handler *)
try
set path_infos to object text of text box boxName
on error
if my parleAnglais() then
error "The document “" & docName & "”" & return & "wasn’t open with this script !"
else
error "Le document « " & docName & " »" & return & "n’a pas été ouvert avec ce script !"
end if
end try
end tell -- document
end tell -- Pages
(*
Split the extracted datas *)
set {docFolder, nomCourt} to my decoupe(path_infos, tab)
set docPath to docFolder & docName
tell application "System Events"
(*
This test was useful during my tests, now it's useless *)
if not (exists disk item docPath) then
makenewfileat end of folderdocFolderwith properties {name:docName}
end if
end tell -- System Events
set docPath to docPath as alias
(*
I don't understand why I must apply save - close - open but without that it fails *)
tell application "Pages"
savedocumentdocNameindocPath
closedocumentdocName
opendocPath
set nbd to count of documents
end tell
my selectMenu("Pages", 3, 10) (* Duplicate *)
(*
Wait the availability of the duplicate *)
tell application "Pages"
repeat 100 times
if (get count of documents) > nbd then exit repeat
delay 0.2
end repeat
(*
Now we may close the 'old' document *)
closedocumentdocName without saving
end tell -- Pages
(*
Build a date_time stamped name for next version *)
set docName to nomCourt & my build_a_stamp() & ".pages"
tell application "Pages"
set name of document 1 to docName
end tell
end run
--=====
on open (sel)
local docPath, docFolder, fileName, theExt, typeID, nomCourt, nouveauNomCourt, newPath, oldUnits, docName, nbd
(*
Apply consistency checks *)
my controle_versions()
set docPath to sel's item 1 (* Here, docPath is an alias *)
(*
Extract some infos about the original document *)
tell application "System Events" to tell disk item (docPath as text)
set docFolder to path of container
set fileName to name
(*
The try block may be useful if an user is fool enough to drag & drop a folder on the scrip’s icon *)
try
set theExt to name extension
on error
set theExt to ""
end try
try
set typeID to type identifier
on error
set typeID to ""
end try
end tell
(*
Check that the dragged item is a Pages document *)
if (typeID is not in permitted) and (typeID is not in modeles) then error number -128
(*
Strip the name extension if there is one *)
if theExt is not "" then
set nomCourt to (text 1 thru -(2 + (length of theExt)) of fileName)
else
set nomCourt to fileName
end if
(*
If the original is a template, we will save the newly created file *)
if typeID is in modeles then
set nouveauNomCourt to nomCourt & my build_a_stamp()
set fileName to nouveauNomCourt & ".pages"
(*
Create a new file *)
tell application "System Events"
makenewfileat end of folderdocFolderwith properties {name:fileName}
end tell
set newPath to (docFolder & fileName) as alias
end if
tell application "Pages"
set oldUnits to ruler units
set ruler units to points
opendocPath
if typeID is in modeles then
(*
Original is a template so save the new doc once *)
savedocument 1 innewPath
set name of document 1 to fileName
end if
set docName to name of document 1
set nbd to count of documents
end tell
my selectMenu("Pages", 3, 10) (* Duplicate *)
(*
Wait the availability of the duplicate *)
tell application "Pages"
repeat 100 times
if (get count of documents) > nbd then exit repeat
delay 0.2
end repeat
(*
Now may close the 'original' document *)
closedocumentdocName without saving
end tell
set docName to nomCourt & my build_a_stamp() & ".pages"
tell application "Pages"
set name of document 1 to docName
(*
CAUTION : due to a bug, whichever wrap property is asked, the object is defined with wrap = center *)
tell document docName
maketext boxat front with properties {width😟get width of page 1), name:boxName, object text:docFolder & tab & nomCourt, horizontal position:0.0, vertical position:0.0, height:15.0, placement:fixed, wrap:none}
tell text box boxName to set properties of object text to {color:{65535, 65535, 65535}, font size:9.0, font name:"Helvetica"}
end tell -- document
set ruler units to oldUnits
end tell
end open
(*
{width:358.0,
name:missing value,
stroke type:none,
object text:"Tapez pour saisir le texte",
rotation:0.0,
stroke width:missing value,
locked:0,
text fit:rectangle,
end color:missing value,
extra space:12.0,
horizontal position:5.0,
class:text box,
id:5459273,
color angle:missing value,
shadow blur:missing value,
stroke color:missing value,
vertical position:5.0,
height:20.0,
shadow opacity:missing value,
shadow color:missing value,
placement:fixed,
wrap:center,
fill type:none,
containing page:…
shadow angle:missing value,
image data:missing value,
containing layer:foreground layer of page 1 of document id 1648067 of application "Pages",
single color:missing value,
shadow:missing value,
image fill type:missing value,
shadow offset:missing value,
start color:missing value,
opacity:100.0}
*)
--=====
on build_a_stamp()
return do shell script "date +_%Y%m%d_%H%M%S"
end build_a_stamp
--=====
on controle_versions()
local app_Version, sysv
tell application "Pages" to set app_Version to version
set sysv to system attribute "sysv"
if (app_Version < "4.1") or (sysv < 4208) then error number -128
end controle_versions
--=====
on parleAnglais()
local z
try
tell application "Pages" to set z to localized string "Cancel"
on error
set z to "Cancel"
end try
return (z is not "Annuler")
end parleAnglais
--=====
on decoupe(t, d)
local oTIDs, l
set oTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to d
set l to text items of t
set AppleScript's text item delimiters to oTIDs
return l
end decoupe
--=====
on recolle(l, d)
local oTIDs, t
set oTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to d
set t to l as text
set AppleScript's text item delimiters to oTIDs
return t
end recolle
--=====
(*
my selectMenu("Pages",5, 12)
==== Uses GUIscripting ====
*)
on selectMenu(theApp, mt, mi)
tell applicationtheApp to activate
tell application "System Events" to tell process theApp to tell menu bar 1 to tell menu bar item mt to tell menu 1 to click menu item mi
end selectMenu
--=====
--[/SCRIPT]
--{code}
Yvan KOENIG (VALLAURIS, France) mardi 23 août 2011 11:24:09
iMac 21”5, i7, 2.8 GHz, 4 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.0
My iDisk is : <http://public.me.com/koenigyvan>
Please : Search for questions similar to your own before submitting them to the community
To be the AW6 successor, iWork MUST integrate a TRUE DB, not a list organizer !