Applescript e Javascript per ottenere il numero da chrome e dare un totale

3

Sto cercando di ottenere tutti i totali da una pagina Web interna e ottenere il totale.

per ottenere un singolo risultato ho scritto questo:

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

l'output su questo esempio è:

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

(PS la valuta non è sempre la stessa)

per ottenere ogni valore che funziona

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

che mi danno qualcosa del genere:

"<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 

Vorrei cancellare il testo e fare un totale,

Provato per cancellare i valori, ma ovviamente non funziona:

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

e per il totale non sono ancora sicuro su come procedere.

    
posta Kevin 06.05.2018 - 16:54
fonte

1 risposta

2

In assenza dell'URL effettivo e dell'output incompleto mostrato nell'OP, il seguente esempio codice AppleScript definisce r come list e somma i suoi valori numerici.

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: il esempio codice AppleScript è proprio questo e non impiega nessun altro errore gestendo quindi cosa viene mostrato e si intende solo per mostrare uno dei molti modi per realizzare un compito. L'onere è sempre sull'utente di aggiungere / utilizzare la gestione degli errori appropriata come necessario / voluto.

    
risposta data 06.05.2018 - 17:47
fonte