Dit is al een code di werkt met 1 nummer:
property numbermap : alias "KRANTEN:Wegwijzer:158001-159000:"tell application "MultiAd Creator Pro" --set number_input to display dialog "Nummerke" default answer "" --set number1 to the text returned of number_input activate --add files numbermap of number1 add files {alias "KRANTEN:Wegwijzer:158001-159000:158019:158019"} at end of document 1end tell
Ik heb geprobeerd zelf een input te creeeren maar dat lukt niet, ik weet niet of jullie ook het programma zullen nodig hebben om hier met te helpen?Is er een mogelijkheid om in het script een serie bestandsnamen te steken zodat deze automatisch geimporteerd worden in ons programma (MultiAd Creator)? Of moeten we met een input venster werken en nummer per nummer ingeven. de filenaam en de mapnaam hebben altijd dezelde naam.Het lukt me niet om de nummers in variabelen om tezetten zodat ik met een input venster kan werken.
THX!D
property numbermap : alias "KRANTEN:Wegwijzer:158001-159000:" tell application "MultiAd Creator Pro" --set number_input to display dialog "Nummerke" default answer "" --set number1 to the text returned of number_input activate --add files numbermap of number1 add files {alias "KRANTEN:Wegwijzer:158001-159000:158019:158019"} at end of document 1 end tell
Ik wil gewoon een input kunnen geven, dus deze regel:
add files {alias "KRANTEN:Wegwijzer:158001-159000:158019:158019"} at end of document 1
zou zoiets moeten worden
add files {alias "KRANTEN:Wegwijzer:158001-159000:INPUT A:INPUT A"} at end of document 1
Maar hoe kan ik daar een variabele invoegen?
(Bewerkt door Creator om 14:53, 23-02-2005)
Zoals je ziet is een alias verwijzing een string (tekst tussen "") met het woordje alias ervoor.Als je er wat aan wilt veranderen moet je de string even apart nemen met
alias "KRANTEN:Wegwijzer:158001-159000:158019:158019" as text
Het resultaat is het string gedeelte, dus alleen "KRANTEN:Wegwijzer:158001-159000:158019:158019".Hier kun je vervolgens een andere tekst aan vast plakken. Bijvoorbeeld je het de verwijzing in tekstvorm in de variabele x, het nummer in y, dan plak je ze aan elkaar met
set z to x & y
Hopelijk lukt het zo. Zoniet, dan zeg je het maar.
Ik heb momenteel deze code gemaakt
property nummersmap : alias "KRANTEN:Wegwijzer:158001-159000:" as texttell application "Finder"set nummer_input to display dialog "Nummer" default answer ""set nummer to the text returned of nummer_inputend telltell application "MultiAd Creator Pro"set nummerke to nummersmap & nummer & ":" & nummer--display dialog nummerkeadd files nummerke at end of document 1end tell
tell application "Finder"set nummer_input to display dialog "Nummer" default answer ""set nummer to the text returned of nummer_inputend tell
tell application "MultiAd Creator Pro"set nummerke to nummersmap & nummer & ":" & nummer--display dialog nummerkeadd files nummerke at end of document 1end tell
En het werkt! THX
Kan ik bij het ingeven van het nummertje een keuze maken in welke map het nummer moet gezocht worden? Is het mogelijk met een dropdown menu'tjes te werken of verschillende buttons?
(Bewerkt door Creator om 9:38, 25-02-2005)
property krant : alias "KRANTEN:Fonteintje:" as textset map1 to "579001-580000:" as textset map2 to "580001-581000:" as texttell application "Finder" set tekst to "Welke map?" set mapnummer to display dialog tekst buttons {map1, map2} set nummer_input to display dialog "Te importeren nummerke ingeven" default answer "" set nummer to the text returned of nummer_input end telltell application "MultiAd Creator Pro" set nummerke to krant & mapnummer & nummer & ":" & nummer add files nummerke at end of document 1end tell
set map1 to "579001-580000:" as textset map2 to "580001-581000:" as text
tell application "Finder" set tekst to "Welke map?" set mapnummer to display dialog tekst buttons {map1, map2} set nummer_input to display dialog "Te importeren nummerke ingeven" default answer "" set nummer to the text returned of nummer_input end tell
tell application "MultiAd Creator Pro" set nummerke to krant & mapnummer & nummer & ":" & nummer add files nummerke at end of document 1end tell
maar ik krijg nog een foutmelding
>>>> kan {button returned:"580001-58100:"} niet in een string omzetten
Rara, daar geraak ik nog niet uit.
property mapkeuze1 : alias "KRANTEN:Fonteintje:579001-580000:" as textproperty mapkeuze2 : alias "KRANTEN:Fonteintje:580001-581000:" as textset map1 to "580000:"set map2 to "580001:"tell application "Finder" set nummer_input to display dialog "Te importeren nummerke ingeven" default answer "" set nummer to the text returned of nummer_inputend telltell application "MultiAd Creator Pro" if nummer < map1 then set nummerke to mapkeuze1 & nummer & ":" & nummer add files nummerke at end of document 1 else set nummerke to mapkeuze2 & nummer & ":" & nummer add files nummerke at end of document 1 end ifend tell
set map1 to "580000:"set map2 to "580001:"
tell application "Finder" set nummer_input to display dialog "Te importeren nummerke ingeven" default answer "" set nummer to the text returned of nummer_inputend tell
tell application "MultiAd Creator Pro" if nummer < map1 then set nummerke to mapkeuze1 & nummer & ":" & nummer add files nummerke at end of document 1 else set nummerke to mapkeuze2 & nummer & ":" & nummer add files nummerke at end of document 1 end ifend tell
Wat je toch allemaal kunt met Applescript!
Je kan inderdaad meerdere nummers invoeren door die te scheiden met een door jou gekozen teken. Wat je ook kan doen is het dialoogvenster dat om een nummer vraagt in een repeat-lus zetten net zo lang tot het er genoeg zijn. Voor het scheiden mbv een teken moet je eerst de zogeheten applescript's text item delimiters instellen. Zet je deze bijvoorbeeld op ">", dan 'knipt' applescript een string op de plaats waar een > voorkomt.
Met <a href=applescript://com.apple.scripteditor/?action=new&script=set%20AppleScript%27s%20text%20item%20delimiters%20to%20%22%3A%22%0Dset%20text_item_list%20to%20every%20text%20item%20of%20%22Dit%3Ais%3Aeen%3Avoorbeeldstring%22%0D%2D%2Dset%20AppleScript%27s%20text%20item%20delimiters%20to%20%22%22>deze[/url] code knip je een string bij een ":"
set AppleScript's text item delimiters to ":"set text_item_list to every text item of "Dit:is:een:voorbeeldstring"--set AppleScript's text item delimiters to ""
Aan het eind hoor je eigenlijk applescript's text item delimiters weer terug te zetten op "" (de originele stand) omdat deze instelling ook na het sluiten van het script behouden blijft. Een ander script dat hier geen rekening mee houd kan dan in de war raken.
Een lijst van strings (het resultaat van knippen) kan je als het nodig is ook weer aan elkaar plakken met het commando set x_string to y_list as string. Als applescript's text item delimiters nog op ":" stond zal applescript de woorden ook weer aan elkaar plakken met een ":" ertussen. Nog een reden om de delimiters weer op "" te zetten.
Ik heb ook aan handigere manier bedacht om te bepalen in welke map je moet zijn. Aan het nummerke kan je in principe al zien in welke map je moet zijn. Nummer 158019 valt bijvoorbeeld tussen 158001-159000.De mappen lijken me per 1000 te gaan, dus als je 158019 deelt door 1000 en afrond naar beneden en weer maal 1000 doet kom je op 158000. Voor de bovenste limiet doe je hetzelfde maar rond je af naar boven. Ik heb alvast <a href=applescript://com.apple.scripteditor/?action=new&script=geef_map%28158019%29%0D%0Don%20geef_map%28nummer%29%0D%09set%20bottom_limit%20to%20%28round%20%28nummer%20%2F%201000%29%20rounding%20down%29%20%2A%201000%20%2B%201%0D%09set%20upper_limit%20to%20%28round%20%28nummer%20%2F%201000%29%20rounding%20up%29%20%2A%201000%0D%09return%20%28bottom_limit%20%26%20%22%2D%22%20%26%20upper_limit%29%20as%20string%0Dend%20geef_map>deze[/url] code voor je:
geef_map(158019)on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as stringend geef_map
on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as stringend geef_map
ik heb mijn script veranderd en jou script er in verweven, maar ik krijg een probleem
property mapkeuze : alias "KRANTEN:Fonteintje:" as textset input to display dialog "Map?" default answer ""set map to the text returned of inputgeef_map(map)on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as stringend geef_maptell application "MultiAd Creator Pro" set nummerke to mapkeuze & geef_map & map & ":" & map add files nummerke at end of document 1end tell
set input to display dialog "Map?" default answer ""set map to the text returned of input
geef_map(map)
tell application "MultiAd Creator Pro" set nummerke to mapkeuze & geef_map & map & ":" & map add files nummerke at end of document 1end tell
bij het runnen van het script en na het invoeren van een nummer krijg ik volgende foutmeldingkan <<handler geef_map>> niet in een string omzetten.
Daar geraak ik niet uit!
THX!
set nummerke to mapkeuze & geef_map & map & ":" & map
Hier denkt applescript dat geef_map een variabele is waar een string in zit, maar kan die niet vinden. Geef_map is namelijk een handler en daarbij zet je altijd twee haakjes erachter, bv handler(). In dit geval staat er ook nog map tussen de haakjes omdat de handler die nodig heeft voor het bepalen van de mapnaam.
In een tell-block moet voor geef_map(map) ook my komen te staan, omdat applescript dan weet dat het binnen zichzelf naar de handler geef_map moet zoeken en niet in MultiAd Creator Pro. Buiten een tell-blobk hoeft dat niet maar mag het wel.
Anyway, <a href=applescript://com.apple.scripteditor/?action=new&script=property%20mapkeuze%20%3A%20alias%20%22KRANTEN%3AFonteintje%3A%22%20as%20text%20%0D%0Dset%20input%20to%20display%20dialog%20%22Map%3F%22%20default%20answer%20%22%22%20%0Dset%20map%20to%20the%20text%20returned%20of%20input%20%0D%0Don%20geef_map%28nummer%29%20%0D%20set%20bottom_limit%20to%20%28round%20%28nummer%20%2F%201000%29%20rounding%20down%29%20%2A%201000%20%2B%201%20%0D%20set%20upper_limit%20to%20%28round%20%28nummer%20%2F%201000%29%20rounding%20up%29%20%2A%201000%20%0D%20return%20%28bottom_limit%20%26%20%22%2D%22%20%26%20upper_limit%29%20as%20string%20%0Dend%20geef_map%20%0D%0D%0Dtell%20application%20%22MultiAd%20Creator%20Pro%22%20%0D%20set%20nummerke%20to%20mapkeuze%20%26%20my%20geef_map%28map%29%20%26%20%22%3A%22%20%26%20map%20%26%20%22%3A%22%20%26%20map%20%0D%20add%20files%20nummerke%20at%20end%20of%20document%201%20%0Dend%20tell>zo[/url] zou de code moeten werken:
property mapkeuze : alias "KRANTEN:Fonteintje:" as text set input to display dialog "Map?" default answer "" set map to the text returned of input on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as string end geef_map tell application "MultiAd Creator Pro" set nummerke to mapkeuze & my geef_map(map) & ":" & map & ":" & map add files nummerke at end of document 1 end tell
set input to display dialog "Map?" default answer "" set map to the text returned of input
on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as string end geef_map
tell application "MultiAd Creator Pro" set nummerke to mapkeuze & my geef_map(map) & ":" & map & ":" & map add files nummerke at end of document 1 end tell
Ik heb dit nu ook willen toepassen op de "idem_nummers"
Zodat ik daar ook niet meer de mappen moet definieren
-- Idems v1.6 - 05.03.09--Vul hier de verwijzing in naar de map met mappen met nummers property nummersmap : alias "KRANTEN:Wegwijzer:" as textproperty idemmap : alias "KRANTEN:Wegwijzer:idems2:"--Vraag om het oude nummer set oud_dialoog to display dialog "Oud nummer?" default answer ""set oud_nummer to the text returned of oud_dialooggeef_map(oud_nummer)on geef_map(nummer) set bottom_limit to (round (nummer / 1000) rounding down) * 1000 + 1 set upper_limit to (round (nummer / 1000) rounding up) * 1000 return (bottom_limit & "-" & upper_limit) as stringend geef_map--Vraag om het nieuwe nummer set nieuw_dialoog to display dialog "Nieuw nummer?" default answer ""set nieuw_nummer to the text returned of nieuw_dialoogtell application "Finder" --Zoek de map met het oude nummer op set oudmap to nummersmap & my geef_map(oud_nummer) & ":" & oud_nummer --Maak een nieuwe map met het nummer nieuw_nummer of kijk of er al een bestaat if not (exists folder nieuw_nummer of idemmap) then set nieuwmap to (make new folder at idemmap with properties {name:nieuw_nummer}) as text else set nieuwmap to (folder nieuw_nummer of idemmap) as text end if display dialog oudmap display dialog nieuwmap --Kopieer de bestanden naar de nieuwe map set oud_files to every item of oudmap --------------------- !!!!!!!!! duplicate oud_files to nieuwmap replacing yes --------------------- !!!!!!!!! set nieuw_files to every item of nieuwmap set nieuw_files to my convert_to_alias(nieuw_files) --Zoek alle bestanden op waar het oude nummer in voorkomt en verander het naar het nieuwe nummer set rename_list to every item of nieuwmap whose name contains geef_map repeat with this_file in rename_list set oude_naam to the name of this_file set nieuwe_naam to my replace_chars(oude_naam, geef_map, nieuw_nummer) set the name of this_file to nieuwe_naam end repeat open file nieuw_nummer of nieuwmap end telltell application "MultiAd Creator Pro" activate set flos to every text flow of document 1 repeat with flo in flos set wds to every word of flo set numWds to number of items of wds repeat with i from 1 to numWds if item i of wds is oud_nummer then set text of word i of flo to nieuw_nummer end if end repeat end repeat save document 1 print document 1 without interaction close document 1 end tell--Dit is een handler om de file path van de Finder om te zetten naar alias paths on convert_to_alias(these_files) set alias_list to {} repeat with this_file in these_files set the end of alias_list to this_file as alias end repeat return alias_listend convert_to_aliason replace_chars(this_text, search_string, replacement_string) set AppleScript's text item delimiters to the search_string set the item_list to every text item of this_text set AppleScript's text item delimiters to the replacement_string set this_text to the item_list as string set AppleScript's text item delimiters to "" return this_textend replace_chars
--Vul hier de verwijzing in naar de map met mappen met nummers property nummersmap : alias "KRANTEN:Wegwijzer:" as textproperty idemmap : alias "KRANTEN:Wegwijzer:idems2:"
--Vraag om het oude nummer set oud_dialoog to display dialog "Oud nummer?" default answer ""set oud_nummer to the text returned of oud_dialoog
geef_map(oud_nummer)
--Vraag om het nieuwe nummer set nieuw_dialoog to display dialog "Nieuw nummer?" default answer ""set nieuw_nummer to the text returned of nieuw_dialoog
tell application "Finder" --Zoek de map met het oude nummer op set oudmap to nummersmap & my geef_map(oud_nummer) & ":" & oud_nummer --Maak een nieuwe map met het nummer nieuw_nummer of kijk of er al een bestaat if not (exists folder nieuw_nummer of idemmap) then set nieuwmap to (make new folder at idemmap with properties {name:nieuw_nummer}) as text else set nieuwmap to (folder nieuw_nummer of idemmap) as text end if display dialog oudmap display dialog nieuwmap --Kopieer de bestanden naar de nieuwe map set oud_files to every item of oudmap --------------------- !!!!!!!!! duplicate oud_files to nieuwmap replacing yes --------------------- !!!!!!!!! set nieuw_files to every item of nieuwmap set nieuw_files to my convert_to_alias(nieuw_files) --Zoek alle bestanden op waar het oude nummer in voorkomt en verander het naar het nieuwe nummer set rename_list to every item of nieuwmap whose name contains geef_map repeat with this_file in rename_list set oude_naam to the name of this_file set nieuwe_naam to my replace_chars(oude_naam, geef_map, nieuw_nummer) set the name of this_file to nieuwe_naam end repeat open file nieuw_nummer of nieuwmap end tell
tell application "MultiAd Creator Pro" activate set flos to every text flow of document 1 repeat with flo in flos set wds to every word of flo set numWds to number of items of wds repeat with i from 1 to numWds if item i of wds is oud_nummer then set text of word i of flo to nieuw_nummer end if end repeat end repeat save document 1 print document 1 without interaction close document 1 end tell
--Dit is een handler om de file path van de Finder om te zetten naar alias paths
on convert_to_alias(these_files) set alias_list to {} repeat with this_file in these_files set the end of alias_list to this_file as alias end repeat return alias_listend convert_to_alias
on replace_chars(this_text, search_string, replacement_string) set AppleScript's text item delimiters to the search_string set the item_list to every text item of this_text set AppleScript's text item delimiters to the replacement_string set this_text to the item_list as string set AppleScript's text item delimiters to "" return this_textend replace_chars
Maar dit werkt nog nietIk krijg een foutmelding op de plaats waar ik ----------- !! geplaatst heb, bij duplicate oud_files to....en de foutmelding is deze -> Finder kreeg een fout: Handler kan objecten van deze klasse niet verwerken.
Als ik met display dialog de waarden oudmap en nieuwmap bekijk, lijkt alles te kloppen, maar ze zijn blijkbaar verkeerd gedefinieerd(??)
set oudmap to nummersmap & my geef_map(oud_nummer) & ":" & oud_nummer
set oudmap to alias (nummersmap & my geef_map(oud_nummer) & ":" & oud_nummer)
(Bewerkt door zonapple om 13:06, 10-03-2005)
Het bestand "K" is onvindbaar - rara
En deze foutmelding krijg ik hier
on convert_to_alias(these_files)set alias_list to {}repeat with this_file in these_filesset the end of alias_list to this_file as aliasend repeatreturn alias_listend convert_to_alias
De letter "K" is de eerste letter van de schijfnaam, zou het daar iets met te zien hebben?
--Kopieer de bestanden naar de nieuwe map set oud_files to every item of oudmapduplicate oud_files to nieuwmap replacing yesset nieuw_files to every item of nieuwmapset nieuw_files to my convert_to_alias(nieuw_files)
ik denk dat het probleem hier in de laatste regel zit, want daar wordt verwezen naar de handler onderaan het script.
(Bewerkt door Creator om 14:58, 10-03-2005)
set nieuw_files to every item of nieuwmap
display dialog (item 1 of nieuw_files as string)
(Bewerkt door zonapple om 11:49, 4-04-2005)
als ik het resultaat wil zien van mijn variabel "nieuw_files" krijg ik dit- "KRANTEN:Fonteintje:idems2:000008:580535"
maar ik zou dit als resultaat moeten hebben- "KRANTEN:Fonteintje:idems2:000008"
hoe kan ik zo iets inkorten?
THx!!
(Bewerkt door Creator om 10:39, 27-04-2005)
(Bewerkt door Creator om 10:47, 27-04-2005)