Applescript vraagje
20 januari 2005 - 09:25    reactie #25
geplaatst door: Creator
ik zal eens een mail sturen naar MultiAd, met de vraag hoe we dit probleem het best kunnen oplossen, ik hou je op de hoogte. En alvast bedankt voor de hulp!!!


THX

Applescript vraagje
21 januari 2005 - 16:12    reactie #26
geplaatst door: Creator
Hallo

ik denk dat ik hier de oplossing heb, maar het zou moeten gelinkt worden aan het huidige script.

Het enige prob daarbij is, voor ik een textreplace wil uitvoeren zou de multiad file moeten geopend worden, hoe dat moet weet ik niet, en op het einde zou er nog een print moeten komen.


hier het script dat ik kunnen bemachtigen heb ;-) heb ik gekregen van multiad zelf.

tell application "MultiAd Creator Pro"
   activate
   set findText to text returned of (display dialog "Enter the text to find." buttons {"Cancel", "OK"} default button "OK" default answer "")
   set repText to text returned of (display dialog "Enter the replacement text." buttons {"Cancel", "OK"} default button "OK" default answer "")
   
   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 findText then
            set text of word i of flo to repText
         end if
      end repeat
   end repeat
end tell


Bij dit script moet ook opnieuw een input gegeven worden, dit zou maar 1x mogen gebeuren bij het begin van het script, maar als ik het script bekijk lijkt dit niet zo eenvoudig.


Alvast bedankt voor de moeite!!!

THX!

Applescript vraagje
24 januari 2005 - 09:26    reactie #27
geplaatst door: Creator
Hallo,

Ik heb zelf het script aangepast, en ik ben er bijna uit! :-)

Maar ik heb ik nog 1 probleem, als ik wil dat multi-ad de file opend in de nieuwe map, gaat het verkeerd toch als ik de variabelen in geef. Geef ik manueel de map en nummer op lukt het wel maar dat is niet de bedoeling van het script.


-------------

--Vul hier de verwijzing in naar de map met mappen met nummers
property nummersmap : alias "KRANTEN:Fonteintje:578001-578500:"
property idemmap : alias "KRANTEN:Fonteintje:idems2:"

tell application "Finder"
   --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
   
   --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
   
   --Zoek de map met het oude nummer op
   set oudmap to (folder oud_nummer of nummersmap) as alias
   
   --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 alias
   else
      set nieuwmap to (folder nieuw_nummer of idemmap) as alias
   end if
   
   --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 oud_nummer
   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, oud_nummer, nieuw_nummer)
      set the name of this_file to nieuwe_naam
   end repeat
   
   
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_list
end 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_text
end replace_chars

tell application "MultiAd Creator Pro"
   activate

   open {alias nieuw_nummer of nieuwmap of idemmap}
   --open {alias "KRANTEN:Fonteintje:idems2:000000:000000"}
   --hierboven is een map die ik manueel aangeduid heb met op het einde een fictieve bestandsnaam 000000
   
   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
   
   
end tell


------

Hopelijk, kan hier iemand een oplossing vinden want dit het einde van dit scriptje!!

THX!!!!

Applescript vraagje
24 januari 2005 - 10:21    reactie #28
geplaatst door: zonapple
Ah, ik zie dat je al beter aan het worden bent. :thumbs-up:
Het probleem is het type verwijzing dat je gebruikt. De vorm folder … of folder … of disk x enz. wordt alleen door de finder gebruikt. Andere programma's kunnen daar niet mee overweg. Gelukkig is er een veel algemenere vorm van verwijzen, en dat is de alias vorm, waarbij de verschillende stappen naar het bestand toe zijn gescheiden door dubbele punten. De vorm van zo'n verwijzing is altijd
alias "…:…:…:…"
je zou in dit geval dus de namen van het bestand en de mappen aan elkaar moeten plakken met dubbele punten ertussen. Wat misschien makkelijker is is het gebruiken van de handler die ik aan het begin heb geschreven waarbij een finder verwijzing wordt omgezet in een alias verwijzing.
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_list
end convert_to_alias

Je roept de handler zo op:
set x to convert_to_alias({document file nieuw_nummer of nieuwmap of idemmap})
Het resultaat is als het goed is een aliasverwijzing. Ik heb tussen de haakjes openen en sluiten de verwijzing in een list {} gezet omdat mijn handler die nodig. heeft. Zeker weten doe ik het niet maar ik heb het ook niet getest. Ik hoop dat je hier wat aan hebt. Laat het me maar weten als je nog wat hulp nodig hebt.  
There's 10 types of people in this world, those who understand binary and those who don't.
Applescript vraagje
24 januari 2005 - 11:00    reactie #29
geplaatst door: Creator
eeuh, alvast bedankt maar het is nog een zoektocht.

die 'set x to convert_to_alias.... moet ik die na tell application "Multi... plaatsen?
Allicht wel want anders zou die convertie naar alias niet nodig zijn, als ik dit doe krijg ik deze foutmelding "Doorgaan onmogelijk convert_to_alias" (???)

Ook al plaats ik deze code boven tell application "multi.. dan nog krijg ik dezelfde foutmelding.

Alle gegevens van deze string worden toegekend aan X dus na tell apllication "multi ... zou ik normaal gewoon open X kunnen opgeven of ben ik verkeerd.

Kan ik niet via finder de file openen? dan moet ik die omweg niet maken zeker?

En zoals gewoonlijk bedankt voor de reactie!!! THX

(Bewerkt door Creator om 9:54, 25-01-2005)

Applescript vraagje
25 januari 2005 - 10:23    reactie #30
geplaatst door: Creator
Wat zoeken al niet kan opleveren! Ik heb de file geopend via finder en dat is gelukt, dus nummertje veranderd er gebeurt een save en het print venster wordt geopend maar de "Print" button wordt nog niet ingedrukt :-( hoe doe ik dit?

dus hoe print ik een document zonder dat ik op print moet drukken

THX!!!

Applescript vraagje
28 januari 2005 - 00:39    reactie #31
geplaatst door: zonapple
Misschien lukt het met UI scripting, daar zal ik later deze week nog eens naar kijken (tentamenweek).
There's 10 types of people in this world, those who understand binary and those who don't.
Applescript vraagje
31 januari 2005 - 16:44    reactie #32
geplaatst door: zonapple
In Creator zelf zit een commando om te printen zonder dat er een dialoog tevoorschijn wordt gehaald.
Het commando is 'print {List of objects to print} interaction false'
Er zijn nog meer opties die je kunt meegeven. Als je die wilt weten moet je maar even in het woordenboek van creator kijken. Via de scriptmaker doe je dan 'Open Woordenboek' of je sleept creator op de scriptmaker,
There's 10 types of people in this world, those who understand binary and those who don't.
Applescript vraagje
3 februari 2005 - 14:38    reactie #33
geplaatst door: Creator
THX zonapple !!!!

Als je een presentje wilt ontvangen moet je maar je adres gegevens doormailen!!

en nogmaals bedankt!!!

Applescript vraagje
6 februari 2005 - 20:52    reactie #34
geplaatst door: zonapple
Een presentje is niet nodig. :biggrin:
Ik ben blij dat het je gelukt is, en heb je met plezier geholpen.

De afgelopen tijd heb ik ook aan een ander interessant script gewerkt, wat je misschien wel leuk vind om te weten.
Het is een aanvulling op het programma Tomato Torrent. Als ik iets via Bittorrent aan het downloaden ben duurt dat soms meerdere dagen, afhankelijk van hoeveel ik download. Als ik op school zit of een weekend ergens anders ben vind ik het fijn om te weten hoever mijn download al is. Het script haalt uit het download venster de waarde van de voortgangsbalk, plus wat tekst over hoe lang het nog gaat duren en hoeveel MB er verzonden is. Vervolgens haalt het script hier de relevante informatie uit en verwerkt dat in een HTML-document. Dat wordt dan geupload naar een server. Ik heb 'm zo ingesteld dat hij zich elke drie minuten herhaald. Ik zit er over te denken om er maar eens een applescript studio programma van te maken, zodat er een nette gebruikersinterface omheen zit.

Het is mooi dat je zoveel met scripten kunt doen. Jammer dat maar weinig mensen de taal beheersen. Ik hoop dat Automator dit gat een beetje gaat vullen.

Oh ja, misschien kende je dit document al, maar als je nog wat meer van Applescript wilt leren kan ik je Applescript for absolute Starters aanbevelen. Het is helemaal op de beginner gericht, maar zelf ik heb er nog een hoop nuttige informatie uit kunnen halen.

Veel succes met scripten verder! :wink:

There's 10 types of people in this world, those who understand binary and those who don't.