3 votos

Applescript y Javascript para obtener un número de Chrome y dar un total

Estoy tratando de obtener todos los totales de una página web interna y obtener el total.

para obtener un solo resultado escribí esto :

tell application "Google Chrome"
    tell tab 1 of window 1 to set orderTotal to execute javascript "document.getElementsByClassName('total')[0].innerHTML;"
end tell 

la salida en este ejemplo es :

"1,200.00JPY"

(PD la moneda no siempre es la misma)

para obtener cada valor esto funciona

tell application "Google Chrome"
    tell tab 1 of window 1 to set r to execute javascript "var outPut=[]; var arr=document.getElementsByClassName('total');for (var i in arr) {outPut.push(arr[i].innerHTML)};outPut;"
end tell
 return r

lo cual me da algo así :

"4,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "3,800.00JPY", "5,000.00JPY", "5,000.00JPY", missing value, missing value, missing 

Me gustaría limpiar el texto y hacer un total,

Intenté esto para limpiar los valores, pero obviamente no funciona :

set theText to Unicode text
property leftEdge1 : ""
property rightEdge1 : ""
try
    set saveTID to text item delimiters
    set text item delimiters to leftEdge1
    set classValue to text item 2 of r
    set text item delimiters to rightEdge1
    set singleValue to text item 1 of classValue
    set text item delimiters to saveTID
    singleValue
end try

y para el total aún no estoy seguro de cómo proceder.

0 votos

1. ¿Cuál es la URL de la página web? 2. La línea que sigue a "que me da algo como esto:" parece estar perdiendo la palabra "valor" ya que termina en "perdido" en lugar de "valor perdido", entonces ¿cuál es? 3. Dado que r contiene el contenido de una array, probablemente debería tratarse como una list y necesitas recorrer con una declaración de repeat.

2voto

user3439894 Puntos 5883

En ausencia de la URL real y lo que parece ser una salida incompleta que se muestra en la OP, el siguiente ejemplo de código de AppleScript define r como una lista y suma sus valores numéricos.

set r to {"4,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "5,000.00JPY", "3,800.00JPY", "5,000.00JPY", "5,000.00JPY", valor faltante, valor faltante, valor faltante}

set theText to Unicode text
property leftEdge1 : ""
property rightEdge1 : ""
set totalValue to 0

repeat with i from 1 to count r
    try
        set saveTID to text item delimiters
        set text item delimiters to leftEdge1
        set classValue to item 2 of item i of r
        set text item delimiters to rightEdge1
        set singleValue to item 1 of classValue
        set text item delimiters to saveTID
        set totalValue to totalValue + singleValue
    end try
end repeat

log totalValue

-- Resultado:
-- 42800

Nota: El ejemplo de código de AppleScript es solo eso y no emplea ningún otro manejo de errores aparte de lo mostrado y está destinado únicamente a mostrar una de las muchas formas de lograr una tarea. Siempre es responsabilidad del Usuario añadir/utilizar el manejo de errores apropiado según sea necesario/deseado.

0 votos

@Bajo riesgo, Mientras que el ejemplo de código AppleScript funciona para devolver un entero, ten en cuenta que si no termina en .00 la salida será en notación científica. Por lo tanto, querrás echar un vistazo a Guía de scripting de automatización de Mac: Manipulando números y también hay una forma sencilla de forzar a una cadena numérica en una respuesta a esta pregunta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X