Vous avez demandé : "Existe-t-il un moyen de script l'interface utilisateur ?" Oui, si vous êtes sur Mac. Vous avez également demandé si quelqu'un avait réussi à le faire. En quelque sorte. Mon histoire remonte à 2005, et la session iTunes Store ne cessait de s'interrompre, si bien que j'ai dû l'exécuter par lots, mais le script suivant fonctionne. Sachez qu'il fonctionne très lentement ; le simple fait de récupérer la classe d'un objet dans iTunes peut prendre près d'une seconde. Je serais heureux de recevoir toute suggestion d'amélioration des performances.
Cela a fonctionné sur OS X Yosemite 10.10.5 avec iTunes 12.3.2.35, et sur OS X Mavericks 10.9.5 avec iTunes 12.3.2.35, le ou autour du 28 février 2016. Toute modification apportée par Apple à l'interface du compte iTunes Store est susceptible d'interrompre ce script.
Dans iTunes, allez dans Store > View Account, connectez-vous, faites défiler jusqu'à Purchase History et cliquez sur See All, puis, lorsque l'écran affichant Batch 1 out of N est visible, exécutez le script suivant dans script Editor :
tell application "System Events"
set dateString to do shell script "date \"+%Y-%m-%d_%H.%M.%S\""
log dateString
set target_file to ((path to documents folder) as text) & dateString & "_iTunes_Purchase_History.txt"
set myOutput to ""
set webArea to UI element "loading iTunes store" of splitter group 1 of window "iTunes" of application process "iTunes"
set batchText to value of first UI element of webArea whose value starts with "Viewing Batch"
log batchText
set AppleScript's text item delimiters to {" "}
set num to last text item in batchText
log num
set currentNum to text item 3 in batchText
log currentNum
repeat num times
set els to UI elements of webArea
set ready to false
set open_target_file to open for access file target_file with write permission
--repeat with el in els
repeat with el in els
set cl to class of el
if cl is button then
set myOutput to myOutput & "\n"
end if
if cl is static text then
set val to value of el
if val starts with "Copyright" then set ready to false
if ready then set myOutput to myOutput & val & "\t"
if val is "Total Price" then set ready to true
end if
end repeat
log myOutput
write myOutput to open_target_file starting at eof
set myOutput to ""
close access open_target_file
click button "Next" of webArea
repeat
delay 2
set batchText to value of first UI element of webArea whose value starts with "Viewing Batch"
set tempNum to text item 3 in batchText
if tempNum is not currentNum then
set currentNum to tempNum
log currentNum
exit repeat
end if
end repeat
delay 2
end repeat
end tell
Cela produit un texte délimité par des tabulations, et non un CSV comme l'a demandé l'OP, mais la plupart des tableurs peuvent l'importer. Les achats de cadeaux semblent perturber le formatage, il faudra donc peut-être procéder à une curation manuelle.
Je me suis appuyé sur les informations disponibles à l'adresse suivante http://n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript/ pour apprendre à créer des scripts d'interface graphique.