--- title: Skryptowanie description: Wykonuj JavaScript z Figma Plugin API — odpytuj węzły, modyfikuj projekty wsadowo, twórz ramki. --- # Skryptowanie `openpencil eval` daje Ci pełne Figma Plugin API w terminalu. Odczytuj węzły, modyfikuj właściwości, twórz kształty — a następnie zapisz zmiany z powrotem do pliku. ## Podstawowe użycie ```sh openpencil eval design.fig -c "figma.currentPage.children.length" ``` Flaga `-c` przyjmuje JavaScript. Globalny obiekt `figma` działa jak Figma Plugin API. ## Odpytywanie węzłów ```sh openpencil eval design.fig -c " figma.currentPage.findAll(n => n.type === 'FRAME' && n.name.includes('Button')) .map(b => ({ id: b.id, name: b.name, w: b.width, h: b.height })) " ``` ## Modyfikacja i zapis ```sh openpencil eval design.fig -c " figma.currentPage.children.forEach(n => n.opacity = 0.5) " -w ``` `-w` zapisuje zmiany z powrotem do pliku wejściowego. Użyj `-o output.fig`, aby zapisać do innego pliku. ## Odczyt ze stdin Dla dłuższych skryptów: ```sh cat transform.js | openpencil eval design.fig --stdin -w ``` ## Tryb żywej aplikacji Pomiń plik, aby uruchomić na działającej aplikacji desktopowej: ```sh openpencil eval -c "figma.currentPage.name" ``` ## Dostępne API Obiekt `figma` obsługuje: - `figma.currentPage` — aktywna strona - `figma.root` — korzeń dokumentu - `figma.createFrame()`, `figma.createRectangle()`, `figma.createEllipse()`, `figma.createText()` itp. - `.findAll()`, `.findOne()` — wyszukiwanie potomków - `.appendChild()`, `.insertChild()` — manipulacja drzewem - Wszystkie settery właściwości: `.fills`, `.strokes`, `.effects`, `.opacity`, `.cornerRadius`, `.layoutMode`, `.itemSpacing` itp. To jest to samo API, którego używają wtyczki Figma, więc istniejąca wiedza i fragmenty kodu można zastosować bezpośrednio. ## Wyjście JSON ```sh openpencil eval design.fig -c "..." --json ```