Applescript y Javascript para obtener el 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:

"<td>1,200.00</td><td>JPY</td>"

(PD: la moneda no siempre es la misma)

por obtener cada valor de este trabajo

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

que me dan algo como esto:

"<td>4,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>3,800.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", missing value, missing value, missing 

Quisiera borrar el texto y hacer un total,

Intenté esto para borrar los valores, pero obviamente no funcionó:

set theText to Unicode text
property leftEdge1 : "<td>"
property rightEdge1 : "</td>"
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 todavía no estoy seguro de cómo proceder.

1. ¿Cuál es la URL de la página web? 2. A la línea que sigue a "que me da algo como esto:" parece que le falta la palabra "valor", ya que termina en "falta" en lugar de "falta de valor", entonces, ¿cuál es? 3. Dado que rcontiene el contenido de un array, probablemente debería tratarse como un listy debe recorrerlo con una repeat declaración .

Respuestas (1)

En esa ausencia de la URL real y lo que parece ser un resultado incompleto, se muestra en el OP el siguiente ejemplo de código AppleScript que se define como y suma sus valores numéricos.rlist

set r to {"<td>4,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>3,800.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", "<td>5,000.00</td><td>JPY</td>", missing value, missing value, missing value}

set theText to Unicode text
property leftEdge1 : "<td>"
property rightEdge1 : "</td>"
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 text item 2 of item i of r
        set text item delimiters to rightEdge1
        set singleValue to text item 1 of classValue
        set text item delimiters to saveTID
        set totalValue to totalValue + singleValue
    end try
end repeat

log totalValue

-- Result:
-- 42800

Nota: El código de AppleScript de ejemplo es solo eso y no emplea ningún otro manejo de errores además de lo que se muestra y está destinado solo a mostrar una de las muchas formas de realizar una tarea. La responsabilidad siempre recae sobre el Usuario para agregar/usar el manejo de errores apropiado según sea necesario/deseable.

@Low Risk, si bien el código AppleScript de ejemplo funciona para devolver un número entero , tenga en cuenta que si no termina en la salida, estará en notación científica. Por lo tanto, querrá echar un vistazo a la Guía de secuencias de comandos de automatización de Mac: manipulación de números y también hay una manera simple de forzar una cadena numérica en una respuesta a esta pregunta . .00