Usted preguntó: "¿hay alguna forma de escribir la interfaz de usuario?" Sí, si estás en una Mac. También preguntas: "¿Alguien ha tenido éxito en hacer esto?" Una especie de Mi historial se remonta a 2005, y la sesión de la tienda iTunes Store se agotó, así que tuve que ejecutarlo por lotes, pero la siguiente secuencia de comandos funciona. Tenga en cuenta que se ejecuta muy lentamente; simplemente recuperar la clase de un objeto de iTunes puede tardar casi un segundo. Agradecería cualquier mejora de rendimiento que cualquiera pueda sugerir.
Esto funcionó en OS X Yosemite 10.10.5 con iTunes 12.3.2.35, y en OS X Mavericks 10.9.5 con iTunes 12.3.2.35, alrededor del 28 de febrero de 2016. Cualquier cambio que Apple realice en la interfaz de cuenta de la tienda iTunes Store probablemente romperá este script.
En iTunes, vaya a Tienda > Vea la cuenta, inicie sesión, desplácese hasta Historial de compras y haga clic en Ver todo, luego, cuando la pantalla que muestra el Lote 1 fuera de N está visible, ejecute el siguiente script en el Editor de secuencias de comandos:
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
Esto produce texto delimitado por tabulaciones, no CSV como el OP solicitado, pero la mayoría de las aplicaciones de hoja de cálculo lo importarán. Las compras de regalos parecen estropear el formato, por lo que puede necesitar cierta curación manual.
Confié en la información en enlace para aprender cómo hacer scripts GUI.