[GastForen Programmierung/Entwicklung AppleScript Aktion für Dateien mit bestimmten Namen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Aktion für Dateien mit bestimmten Namen

Moosbach
Beiträge gesamt: 385

5. Okt 2021, 11:55
Beitrag # 1 von 6
Bewertung:
(8855 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich möchte gerne PDF Dateien, die mit einem bestimmten Namen anfangen, automatisch ausdrucken lassen. Dabei sollen nur die neusten Pdf Dateien gedruckt werden. Dafür habe ich dieses AppleScript als Ordneraktion ausgewählt. Bei diesem Script werden jetzt schon die neusten Dateien gedruckt. Aber wie kann ich das auf die Dateien mit einem bestimmten Namen herausfiltern?

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.

on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
--get the name of the folder
set the folder_name to the name of this_folder
end tell

-- find out how many new items have been placed in the folder
set the item_count to the number of items in the added_items
--create the alert string
set alert_message to ("Folder Actions Alert:" & return & return) as Unicode text
if the item_count is greater than 1 then
if the item_name contain Rechnung-3 then
set alert_message to alert_message & (the item_count as text) & " new items have "
else
set alert_message to alert_message & "One new item has "
end if
set alert_message to alert_message & "been placed in folder " & «data utxt201C» & the folder_name & «data utxt201D» & "."
set the alert_message to (the alert_message & return & return & "Would you like to view the added items?")

display dialog the alert_message buttons {"Yes", "No"} default button 2 with icon 1 giving up after dialog_timeout
set the user_choice to the button returned of the result

if user_choice is "Yes" then
tell application "Finder"
--go to the desktop
activate
--open the folder
open this_folder
--select the items
print the added_items
end tell
end if
end try
end adding folder items to
X

Aktion für Dateien mit bestimmten Namen

Hans Haesler
  
Beiträge gesamt: 5826

5. Okt 2021, 13:18
Beitrag # 2 von 6
Beitrag ID: #581350
Bewertung:
(8825 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Moosbach,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Wie lautet denn der bestimmte Name?

*****
Ich muss gleich weg, werde aber heute noch versuchen, eine Lösung anzubieten.

Es sei denn, es komme mir jemand zuvor ... (noch so gerne :-)

Gruss, Hans


als Antwort auf: [#581348]

Aktion für Dateien mit bestimmten Namen

Moosbach
Beiträge gesamt: 385

5. Okt 2021, 23:02
Beitrag # 3 von 6
Beitrag ID: #581352
Bewertung:
(8742 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also der Dateinamen steht immer am Anfang und dann kommt eine Nummer. Daher soll das Script die Dateien mit dem entsprechenden Dateinameanfang erkennen, wenn die Datei in den Ordner gelegt wird.

"Dateiname_123....pdf"
Die Zahl ändert sich immer. Aktuell erkennt das Script ja nur die neu in den Ordner gelegten Dokumente.


als Antwort auf: [#581350]

Aktion für Dateien mit bestimmten Namen

Hans Haesler
  
Beiträge gesamt: 5826

6. Okt 2021, 09:49
Beitrag # 4 von 6
Beitrag ID: #581353
Bewertung:
(8658 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Moosbach,

so könnte es funktionieren. In einer Schleife wird geprüft, ob der Name der aktuellen Datei mit dem definierten Text anfängt:

Code
property dialog_timeout : 30 #  set the amount of time before dialogs auto-answer. 
property nameStart : "Dateiname"
property printedItems : 0

on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
# get the name of the folder
set the folder_name to the name of this_folder
end tell

# find out how many new items have been placed in the folder
set the item_count to the number of items in the added_items
# create the alert string
set alert_message to ("Folder Actions Alert:" & return & return) as Unicode text

if the item_count is greater than 1 then
if the item_name contains Rechnung - 3 then
set alert_message to alert_message & (the item_count as text) & " new items have "
else
set alert_message to alert_message & "One new item has "
end if
set alert_message to alert_message & "been placed in folder " & «data utxt201C» & the folder_name & «data utxt201D» & "."
set the alert_message to (the alert_message & return & return & "Would you like to print the added items?")

display dialog the alert_message buttons {"Yes", "No"} default button 2 with icon 1 giving up after dialog_timeout
set the user_choice to the button returned of the result

if user_choice is "Yes" then
set nItems to count of added_items
tell application "Finder"
activate
# open the folder
open this_folder
# print the items starting with the defined text
repeat with n from 1 to nItems
set curItem to item n of added_items
if name of curItem starts with nameStart then
print curItem
set printedItems to printedItems + 1
end if
end repeat
end tell
# check if at least one item has been printed
if printedItems is 0 then
display dialog "Not one item printed." buttons "OK" default button 1
end if
end if
end if
end try
end adding folder items to

Ich habe beim Testen die Dialoge auskommentiert. Weil die Variable Rechnung nicht initialisiert ist. Und die Namen der Ordner mochte ich nicht ersetzten.

Gruss, Hans


als Antwort auf: [#581352]

Aktion für Dateien mit bestimmten Namen

Moosbach
Beiträge gesamt: 385

7. Okt 2021, 11:09
Beitrag # 5 von 6
Beitrag ID: #581372
Bewertung:
(8526 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
erstmal vielen Dank für deine Unterstützung, das ist wirklich nett.
Ich habe gestern das Script so eingesetzt unter Ordneraktionen, aber es tut sich leider nichts, wenn ich eine Pdf Datei in den Ordner lege, die mit Rechnung-3 anfängt. Muss ich da noch was verändern?

Gruss Moosbach


als Antwort auf: [#581353]

Aktion für Dateien mit bestimmten Namen

Hans Haesler
  
Beiträge gesamt: 5826

7. Okt 2021, 12:01
Beitrag # 6 von 6
Beitrag ID: #581373
Bewertung:
(8500 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Moosbach,

bitte sehr.

Also ... mit nur einer hinzugefügten PDF-Datei tut sich nichts, weil dieser Test ...

Code
if the item_count is greater than 1 then 

... die folgenden Dialoge erst zeigt, wenn mehr als eine Datei hinzugefügt wurde. Folglich muss die Eins durch eine Null ersetzt werden

Code
if the item_count is greater than 0 then 

Und jetzt ist mir auch klar, was es mit der Variablen *Rechnung* auf sich hat. Damit dieser Test funktioniert, muss der Begriff mit An- und Abführungszeichen umgeben sein.

Aber: Die Variable *item_name* ist auch nicht initialisiert.

Dieses vorgängige Prüfen des Dateinamens habe ich im folgenden Script weggelassen. Es wird nur die Anzahl der hinzugefügten PDF-Dateien gemeldet. Und der Anwender wird gefragt, ob er die Dateien ausdrucken will.

Wenn die Antwort "Yes" ist, geht das Script in einer Schleife durch die Dateien und druckt jene, deren Name mit dem definierten Text beginnt.

Dieser Text muss in der zweiten Zeile des Scripts stehen:

Code
property nameStart : "Rechnung-3" 


Und damit sollte sich etwas tun:

Code
property dialog_timeout : 30 #  set the amount of time before dialogs auto-answer.  
property nameStart : "Rechnung-3"
property printedItems : 0

on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
# get the name of the folder
set the folder_name to the name of this_folder
end tell

# find out how many new items have been placed in the folder
set the item_count to the number of items in the added_items
# create the alert string
set alert_message to ("Folder Actions Alert:" & return & return) as Unicode text

if item_count is greater than 0 then
if item_count is greater than 1 then
set alert_message to alert_message & (item_count as text) & " new items have "
else
set alert_message to alert_message & "One new item has "
end if
set alert_message to alert_message & "been placed in folder " & «data utxt201C» & the folder_name & «data utxt201D» & "."
set the alert_message to (the alert_message & return & return & "Would you like to print the added items?")

display dialog alert_message buttons {"Yes", "No"} default button 2 with icon 1 giving up after dialog_timeout
set user_choice to button returned of the result

if user_choice is "Yes" then
set nItems to count of added_items
tell application "Finder"
activate
# open the folder
open this_folder
# print the items starting with the defined text
repeat with n from 1 to nItems
set curItem to item n of added_items
if name of curItem starts with nameStart then
print curItem
set printedItems to printedItems + 1
end if
end repeat
end tell
# check if at least one item has been printed
if printedItems is 0 then
display dialog "Not one item printed." buttons "OK" default button 1
end if
end if
end if
end try
end adding folder items to

Ich habe das nur theoretisch durchgespielt. In der Hoffnung, dass es bei der praktischen Erprobung funktionieren wird.

Gruss, Hans


als Antwort auf: [#581372]
X