Find / replace in filepath

I am working on a script to change the file path of a hyperlink


tell application "Adobe InDesign CS5"
	tell active document
		set listOfButtons to every button
		repeat with thisButton in listOfButtons
			tell thisButton
				set FilePath to file path of goto anchor behaviors
				return FilePath
			end tell
		end repeat
	end tell
	
end tell

the answer I get is : {“Content:Pricelist:Catalog:Interactief:BE:21_ES_Ventielen_be_dig.indd”}

Now I want to change “BE” into “FR” and “be” into “fr”
(in the future I will have to change it to other suffix, so it would be nice if this can be included as well :slight_smile: )

Can anyone help we to do this?

try this

to split(someText, scheidingsteken) -- functie om string om te zetten naar lijst
	set AppleScript's text item delimiters to scheidingsteken -- wijzig standaard scheidingstekens
	set aList to someText's text items -- zet string om in list
	set AppleScript's text item delimiters to {""} -- standaard scheidingstekens herstellen
	return aList -- de lijst doorgeven
end split
to stringify(aList, scheidingsteken) -- functie om string om te zetten naar lijst
	set AppleScript's text item delimiters to scheidingsteken -- wijzig standaard scheidingstekens
	set someText to aList as string -- zet lijst om in string
	set AppleScript's text item delimiters to {""} -- standaard scheidingstekens herstellen
	return someText -- de lijst doorgeven
end stringify

set aPath to {"Content:Pricelist:Catalog:Interactief:BE:21_ES_blablablaVentielen_be_dig.indd"}
set aPath to split((item 1 of aPath), ":")

repeat with i from 1 to count aPath
	considering case
		if item i of aPath is "BE" then
			set item i of aPath to "FR"
		else if item i of aPath is "FR" then
			set item i of aPath to "BE"
		end if
	end considering
end repeat
set last item of aPath to split(last item of aPath, "_")
repeat with j from 1 to (count last item of aPath)
	considering case
		if item j of last item of aPath is "be" then
			set item j of last item of aPath to "fr"
		else if item j of last item of aPath is "fr" then
			set item j of last item of aPath to "be"
		end if
	end considering
end repeat
set last item of aPath to stringify(last item of aPath, "_")
set aPath to stringify(aPath, ":")
return {aPath}

Damiaan,

dank je wel… ik zie dat je ook Nederlands spreekt :slight_smile:

Ik ben nog maar een beginner… misschien een domme vraag…

waar moet ik jouw stukje script in het mijne plakken?

ik had dit gedaan; maar kreeg nog een foutmelding:


to split(someText, scheidingsteken) -- functie om string om te zetten naar lijst
	set AppleScript's text item delimiters to scheidingsteken -- wijzig standaard scheidingstekens
	set aList to someText's text items -- zet string om in list
	set AppleScript's text item delimiters to {""} -- standaard scheidingstekens herstellen
	return aList -- de lijst doorgeven
end split
to stringify(aList, scheidingsteken) -- functie om string om te zetten naar lijst
	set AppleScript's text item delimiters to scheidingsteken -- wijzig standaard scheidingstekens
	set someText to aList as string -- zet lijst om in string
	set AppleScript's text item delimiters to {""} -- standaard scheidingstekens herstellen
	return someText -- de lijst doorgeven
end stringify

tell application "Adobe InDesign CS5"
	tell active document
		set listOfButtons to every button
		repeat with thisButton in listOfButtons
			tell thisButton
				set FilePath to file path of goto anchor behaviors
				set aPath to FilePath
				set aPath to split {(item 1 of aPath), ":"}
				
				repeat with i from 1 to count aPath
					considering case
						if item i of aPath is "BE" then
							set item i of aPath to "FR"
						else if item i of aPath is "FR" then
							set item i of aPath to "BE"
						end if
					end considering
				end repeat
				set last item of aPath to split {last item of aPath, "_"}
				repeat with j from 1 to (count last item of aPath)
					considering case
						if item j of last item of aPath is "be" then
							set item j of last item of aPath to "fr"
						else if item j of last item of aPath is "fr" then
							set item j of last item of aPath to "be"
						end if
					end considering
				end repeat
				set last item of aPath to stringify(last item of aPath, "_")
				set aPath to stringify(aPath, ":")
				return {aPath}
				
			end tell
		end repeat
	end tell
end tell

Ja dat ziet er normaal goed uit.
Misschien moet je me eens de error doorsturen en zeggen wat je krijgt als resultaat als je

return aPath

eens na de regel

set aPath to FilePath

in jouw script schrijft.

Dit is wat ik dan krijg als antwoord:

tell application “Adobe InDesign CS5”
get every button of active document
→ {button id 211 of spread id 185 of document id 161, button id 200 of spread id 185 of document id 161}
get file path of every goto anchor behavior of button id 211 of spread id 185 of document id 161
→ {“Content:Pricelist:Catalog:Interactief:BE:32_EC_Twine Pinch_be_dig.indd”}
end tell
Resultaat:
{“Content:Pricelist:Catalog:Interactief:BE:32_EC_Twine Pinch_be_dig.indd”}

Volgens mij werkt het tot hier goed en heet hij een probleem bij het splitsen van het path.

Nu, ik heb ook wel gemerkt dat als ik

return FilePath

ingeef na

set FilePath to file path of goto anchor behaviors

Dat ik dan een lijst van alle filepaths krijg. Ik weet niet of dit ook een probleem kan zijn.

Ik hoop echt dat dit script lukt want als ik al die buttons moet gaan herlinken dan ben ik wel even zoet (het zijn in totaal 440 pagina’s) en ik ga die in 10 talen moeten maken… :frowning:

Lieve vrienden,

for all no dutch speaking people who are interested in this topic, please continue writing in English

thank you

:slight_smile: