Applescript & Javascript, um eine Nummer von Chrome zu erhalten und eine Gesamtsumme anzugeben

Ich versuche, alle Summen von einer internen Webseite abzurufen und die Summe zu erhalten.

Um ein einzelnes Ergebnis zu erhalten, habe ich Folgendes geschrieben:

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

Die Ausgabe in diesem Beispiel ist:

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

(PS die Währung ist nicht immer gleich)

um jeden Wert dieser Arbeit zu erhalten

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

die mir so etwas geben:

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

Ich möchte den Text löschen und insgesamt tun,

Habe dies versucht, um die Werte zu löschen, funktioniert aber offensichtlich nicht:

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

und insgesamt bin ich mir noch nicht sicher, wie ich weiter vorgehen soll.

1. Wie lautet die URL der Webseite? 2. In der Zeile nach „die mir so etwas geben:“ scheint das Wort „Wert“ zu fehlen, da es mit „fehlt“ statt mit „fehlender Wert“ endet, also was ist es? 3. Da es rden Inhalt von an enthält, arraysollte es wahrscheinlich als a behandelt werden list, und Sie müssen es mit einer Anweisung durchlaufen . repeat

Antworten (1)

In diesem Fehlen der tatsächlichen URL und der anscheinend unvollständigen Ausgabe wird im OP der folgende Beispiel -AppleScript- Coder als definiert listund seine numerischen Werte summiert.

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

Hinweis: Der beispielhafte AppleScript- Code ist genau das und verwendet keine andere Fehlerbehandlung als die gezeigte und soll nur eine von vielen Möglichkeiten zeigen, eine Aufgabe zu erledigen. Es liegt immer in der Verantwortung des Benutzers, eine geeignete Fehlerbehandlung nach Bedarf/Wunsch hinzuzufügen/zu verwenden .

@Low Risk, Während der Beispiel- AppleScript- Code eine Ganzzahl zurückgibt , denken Sie daran, dass .00die Ausgabe in wissenschaftlicher Notation erfolgt, wenn sie nicht endet. Sie sollten sich also Mac Automation Scripting Guide: Manipulating Numbers ansehen , und es gibt auch eine einfache Möglichkeit, eine numerische Zeichenfolge als Antwort auf diese Frage zu erzwingen .