Automator - Eurobeträge von markierten Ordner-/Dateibezeichnungen zusammenrechnen?

S

ShnikShnak

Aktives Mitglied
Thread Starter
Dabei seit
11.04.2007
Beiträge
1.122
Reaktionspunkte
43
MoinMoin,

mit dem Automator habe ich so meine Probleme. Schlicht - ich tue mich schwer es zu begreifen.
Jetzt kurz vor Weihnachten will ich mir selbst einen Wunsch erfüllen.
Deshalb frage ich erst einmal ob das überhaupt geht was ich mir wünsche?

Meine Dateien oder Ordner enthalten im Text Eurobeträge die durch Bindestriche und Freizeichen abgegrenzt sind.

Zwei Beispiele

Rechnung - 07_09_2014-06_12_2014 - 251,25 EUR - 18.12.2014
Rechnung - 07.09.2014 bis 06.12.2014 - 10.251,25 € - Bezahlt

Ich möchte gern die Gesamtsumme (Addition) von markierten Dateien und/oder Ordner automatisch errechnen lassen.
Ich habe das Gefühl weiter träumen und selbst rechnen zu müssen - oder geht das?
 
Hallo,

- Skript-Editor öffnen
- untenstehende Code hinein kopieren
- Ablage > Exportieren…
- Skript mit Dateiformat "Programm" sichern

Die erstellte Programmdatei ist ein "Droplet".
D.h. Du kannst jetzt einfach beliebige Dateien/Ordner auf dieses draufziehen.
Mit dem von Dir vorgegebenen Dateinamenaufbau wird die Summe berechnet.
Ist das nicht möglich, dann bekommst Du eine entsprechende Fehlermeldung. Anderenfalls das Ergebnis

Viele Grüße

Code:
--

on open these_items
	
	--
	
	set someNumber to my totalFromSelection(these_items)
	
	if (someNumber < 0) then
		
		--
		
		display alert "Achtung" as critical message "Die Gesamtsumme der markierten Dateien/Ordner konnte nicht ermittelt werden. Ein oder mehrere Namen haben nicht das richtige Format."
		
		--
		
		return false
		
		--
		
	end if
	
	--
	
	set someText to number_to_string(someNumber)
	
	--
	
	display alert "Ergebnis" as informational message "Die Gesamtsumme beträgt " & someText & " Euro."
	
	--
	
	return true
	
	--
	
end open

--

on totalFromSelection(allItems)
	
	--
	
	if ((count of allItems) < 1) then
		
		return -1
		
	end if
	
	--
	
	set total to 0
	
	--
	
	repeat with nItem in allItems
		
		--
		
		set someNumber to my totalFromItem(nItem)
		
		if (someNumber < 0) then
			
			return -2
			
		end if
		
		--
		
		set total to total + someNumber
		
		--
		
	end repeat
	
	--
	
	return total
	
	--
	
end totalFromSelection

--

on totalFromItem(aItem)
	
	--
	
	tell application "Finder"
		
		set someText to name of aItem
		
	end tell
	
	--
	
	set someNumber to my totalFromTextWithDelimiter(someText, "€")
	
	if (someNumber ≥ 0) then
		
		return someNumber
		
	end if
	
	--
	
	set someNumber to my totalFromTextWithDelimiter(someText, "EUR")
	
	if (someNumber ≥ 0) then
		
		return someNumber
		
	end if
	
	--
	
	return -1
	
	--
	
end totalFromItem

--

on totalFromTextWithDelimiter(someText, someDelimiter)
	
	--
	
	set AppleScript's text item delimiters to someDelimiter
	
	--
	
	set allItems to text items of someText
	
	if ((count of allItems) < 2) then
		
		return -1
		
	end if
	
	--
	
	set someText to first item of allItems
	
	--
	
	set AppleScript's text item delimiters to " - "
	
	--
	
	set allItems to text items of someText
	
	if ((count of allItems) < 2) then
		
		return -2
		
	end if
	
	--
	
	set someText to last item of allItems
	
	--
	
	set someNumber to someText as number
	
	if (someNumber < 0) then
		
		return -3
		
	end if
	
	--
	
	return someNumber
	
	--
	
end totalFromTextWithDelimiter

--

on number_to_string(this_number)
	
	--
	
	-- http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html
	
	--
	
	set AppleScript's text item delimiters to ""
	
	--
	
	set this_number to this_number as string
	
	--
	
	set x to the offset of "," in this_number
	
	--
	
	if this_number contains "E+" then
		set y to the offset of "+" in this_number
		set z to the offset of "E" in this_number
		set the decimal_adjust to characters (y - (length of this_number)) thru ¬
			-1 of this_number as string as number
		if x is not 0 then
			set the first_part to characters 1 thru (x - 1) of this_number as string
		else
			set the first_part to ""
		end if
		set the second_part to characters (x + 1) thru (z - 1) of this_number as string
		set the converted_number to the first_part
		repeat with i from 1 to the decimal_adjust
			try
				set the converted_number to ¬
					the converted_number & character i of the second_part
			on error
				set the converted_number to the converted_number & "0"
			end try
		end repeat
		
		set someText to this_number
		
		set someText to characters 1 thru (z - 1) of someText as string
		
		set someText to characters (x + 1 + decimal_adjust) thru (length of someText) of someText as string
		
		set converted_number to my comma_delimit(converted_number)
		
		set converted_number to converted_number & "," & someText
		
		return the converted_number
	else
		
		--
		
		set someText to this_number
		
		set someText to characters 1 thru (x - 1) of someText as string
		
		set someText to my comma_delimit(someText)
		
		--
		
		if (x > 0) then
			
			set this_number to characters (x + 1) thru (length of this_number) of this_number as string
			
		else
			
			set this_number to "00"
			
		end if
		
		--
		
		set someText to someText & "," & this_number
		
		--
		
		return someText
		
		--
		
	end if
	
end number_to_string

on comma_delimit(this_number)
	
	--
	
	-- http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html
	
	--
	
	set AppleScript's text item delimiters to ""
	
	--
	
	set the num_length to the length of this_number
	set the this_number to (the reverse of every character of this_number) as string
	set the new_num to ""
	repeat with i from 1 to the num_length
		if i is the num_length or (i mod 3) is not 0 then
			set the new_num to (character i of this_number & the new_num) as string
		else
			set the new_num to ("." & character i of this_number & the new_num) as string
		end if
	end repeat
	return the new_num
end comma_delimit
 
Ja..verdammt noch mal, ist denn etwa schon Weihnachten?!

Erst mal DANKE das Du Dir so eine Mühe gemacht hast.
Ich werde es heute Abend gleich mal ausprobieren.


PS. Nicht wundern wegen des Absenders. Ich sitze im Büro (Am Wochenende das Los eines Selbständigen) und schreibe von einem Mac eines Mitarbeiters dessen Account noch online ist.
 
Es funktioniert - ohne Fehlermeldung - Vielen-Vielen Dank!

! Ich meckere nicht ! aber bei einigen Bundles erhalte ich zwei Ergebnisse hintereinander, die in der Summe auch stimmen.

Wenn es einer weiss.... Ich bin da an meiner Grenze.

Beispiel (pdf Dateien):

SSSSSSSSSS - Ppppppppp - Ddddddddd - aaaaaaaaa_bbbbbb_ccccccccccc - 09_12_2013-08_03_2014 - 899,77 EUR
SSSSSSSSSS - Ppppppppp - Ddddddddd - aaaaaaaaa_bbbbbb_ccccccccccc - 09_09_2014-08_12_2014 - 392,12 EUR
SSSSSSSSSS - Ppppppppp - Ddddddddd - aaaaaaaaa_bbbbbb_ccccccccccc - 09_06_2014-08_09_2014 - 571,75 EUR
SSSSSSSSSS - Ppppppppp - Ddddddddd - aaaaaaaaa_bbbbbb_ccccccccccc - 09_03_2014-08_06_2014 - 428,15 EUR

Ergebnis 1: 963,87 Euro
Ergebnis 2: 1.327,92 Euro


PS: Ich habe versucht es selbst heraus zu bekommen und es liegt an den PDF-Dateien. Die sind übrigens alle mit dem gleichen Scanner erstellt.
An Hand des zweiten Ergebnisses (das nach dem Schließen des ersten Teil-Ergebnisses angezeigt wird) ist meist an der Summe zu erkennen, um welche einzelne PDF-Datei es sich handelt, weil die den gleichen Euro-Wert hat. (Im obigen Beispiel sind es zwei Dateien - die 1. und 4.)
Füge ich nun dieser PDF eine neue Seite hinzu, schließe/speichere die PDF, öffne sie wieder und lösche die hinzugefügte Seite und schließe/speichere wieder. Dann funktioniert die Summierung.

Ob das damit zu tun hat.
Mir fällt nämlich in letzter Zeit auf, dass wenn ich mehrere markierte PDF-Dateien oder natürlich getrennt JPG-Dateien in der Vorschau öffne, dass die Vorschau dann mal für nur eine oder mehrere Dateien extra ein zweites Mal nur mit diesen öffnet.
Und das sind auch die, die zwei Ergebnisse verursachen.
Bei PDF-Dateien ist bei erneuten Versuchen sie nur unter einer Vorschau zu öffnen in der Verteilung auf zwei Vorschauen immer identisch.
Bei JPG-Dateien öffnen nach dem zweiten oder dritten Versuch alle Fotos in nur (von mir als Normal angesehen) einer Vorschau.
PDF und JPG sind mit dem jeweils gleichen Geräten und mehrere zur gleichen Zeit erstellt.
Ich habe keine Ahnung woran das liegt.
 
Zuletzt bearbeitet:
Zurück
Oben Unten