Kan man skapa nya listor inne i skript?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2008-12-17 21:09

Jag vill skapa listor i ett skript men jag vet inte vilka eller hur många jag kommer att landa i. Typ så här:

property myDocList : {}

tell application "Adobe InDesign CS2"
	set myDoc to active document
	set myFontList to fonts of myDoc
	if myDoc is not in myDocList then
		set myDocList to myDocList & myDoc
	end if
	repeat with i from 1 to count of myDocList
		set N to i
		-- set (myFontList & N) to myFontList
	end repeat
end tell

(myFontlist & N) ska bli en egen lista för varje gång skriptet körs, typ myFontlist1 osv, så att den korrelerar med listan myDocList. Nu är den bortkommenterad eftersom den inte går att kompilera.

Jag vill alltså köra ett skript på en rad dokument och sedan på slutet pressa ut en lista på alla typsnitt som används.
Jag kan göra det annorlunda men vill använda just dessa komponenter i andra delar av skriptet.

Exempel

set minLista to {} -- Skapar en tom lista
-- Lägger till listobjekt
set minLista to minLista & "cykel"
set minLista to minLista & "boll"
set minLista to minLista & "pump"
set minLista to minLista & 3.14

  • Medlem
  • 2008-12-18 12:35

åh, visst är det så. Jag gick över ån efter vatten...

  • Medlem
  • 2008-12-18 13:55

Hmm, när jag var fel (eller rätt) på det redan från början. Jag vill att min minLista ska heta (myDock). Men då får jag felet "Can’t set (name of myDoc as string) to {}. Access not allowed." av script debugger.
Skit.

Studera och lär min gosse:

property myNestedList : {} --property bevarar värdet mellan körningar

set end of myNestedList to {DocName:"document 1", FontList:{"Verdana", "Arial", "Courier"}}
set end of myNestedList to {DocName:"document 2", FontList:{"Myriad", "Times"}}
set end of myNestedList to {DocName:"document 3", FontList:{"Comic sans", "Wingdings", "Verdana", "Arial"}}

--records används för att hämta saker via namn, "FontList" innehåller i sin tur en lista
--bygg alltid på listor (som myNestedList) med "set end of" eller "set beginning of" - mycket effektivare, se dock undantaget nedan


set myAllFontsInAllDocs to {} --tom lista för att bygga på

repeat with i in myNestedList
	set myListItem to contents of i -- contents hämtar värdet, istället för en referens
	set myDocName to DocName of myListItem -- här kan vi hämta värdet via "DocName" i vår record
	set myDocFonts to FontList of myListItem -- här hämtar vi listan med dokumentets fonter med hjälpav  "FontList" i vår record
	set myAllFontsInAllDocs to myAllFontsInAllDocs & myDocFonts -- enda gången man ska bygga på en lista med &-tecknet är när man vill slå samman två listor till en, annars får man en lista av listor
end repeat


(* utifall du behöver unika fontnamn
set myUniqueFonts to {}


repeat with j in myAllFontsInAllDocs
	if (contents of j) is not in myUniqueFonts then
		set end of myUniqueFonts to (contents of j)
	end if
end repeat

return myUniqueFonts

*)
  • Medlem
  • 2009-01-25 15:05

Tack!

1
Bevaka tråden