# Getting started with Scripting

## Recommended readings

### Learning Javascript

* JavaScript: The Definitive Guide by David Flanagan (Just read the parts about coding; not web dev)

### References

* [**AE Scripting Guide**](http://docs.aenhancers.com/)
* <https://estk.aenhancers.com/index.html> (Contains ScriptUI documentation)
* **ScriptUI**
  * [Interactive Dialog Builder](https://scriptui.joonas.me/)
  * [Peter Kahrel's ScriptUI documentation](http://www.kahrel.plus.com/indesign/scriptui.html) (recommended)
  * [Adobe Javascript Tools Guide](https://forums.adobe.com/external-link.jspa?url=https%3A%2F%2Fwww.google.co.uk%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D1%26cad%3Drja%26ved%3D0CC8QFjAA%26url%3Dhttp%253A%252F%252Fwwwimages.adobe.com%252Fwww.adobe.com%252Fcontent%252Fdam%252FAdobe%252Fen%252Fproducts%252Findesign%252Fpdfs%252FJavaScriptToolsGuide_CS5.pdf%26ei%3D84vEUdipCdPv0gX064DYCQ%26usg%3DAFQjCNHopvf5agDw1OgtcvbB61RRF_ucOA%26sig2%3Dz0r1T-MYoBSpXgdejliHSQ%26bvm%3Dbv.48293060%2Cd.d2k) (not as good, but official)
  * **Two ways to browse the object structure to see what exists:**
    * Use the generated web pages at <http://jongware.mit.edu>/, eg.
      * ScriptUI - <http://jongware.mit.edu/scriptuihtml/Sui/index_1.html>
      * Illustrator (CS6) - <http://jongware.mit.edu/iljscs6html/iljscs6/>
      * InDesign (CS6) - <http://jongware.mit.edu/idcs6js>
      * Photoshop (CS5) -[ http://jongware.mit.edu/pscs5js\_html/psjscs5/](< http://jongware.mit.edu/pscs5js_html/psjscs5/>)
    * **Open up the Adobe Extendscript Toolkit** (ESTK, on a Mac it's in Applications > Utilities > Adobe Utilities...), then open Help > Object Model Viewer, choosing "ScriptUI classes" from the top left drop down menu.Or look at the Javascript Tools Guide, + the Intro to Scripting guide in the help menu
  * **Notes**

    For a script to be dockable, you must install the scripts into the ScriptUI folder, and you must invoke it from the Window menu. Then it will open as a panel, and you can drag and drop it into the UI as you would any other panel.

### Training&#x20;

* [FXPHD AFX210 Introduction to After Effects Scripting ](https://www.fxphd.com/details/196/)— highly recommended for beginners
* [FXPHD AFX226: Scripting in After Effects](https://www.fxphd.com/details/516/), MATHIAS MÖHL
* [FXPHD AFX303 Advanced Scripting for After Effects, Part 1](https://www.fxphd.com/details/539/), Feb 2017
* [FXPHD AFX304 Advanced Scripting for After Effects, Part 2](https://www.fxphd.com/details/541/) , Feb 2017
* [ExtendScript Script Writing Training, David Torno](https://www.provideocoalition.com/after-effects-extendscript-training-complete-series/)

### Others

* [After Effects Menu Command IDs](https://www.provideocoalition.com/after-effects-menu-command-ids/)
* <http://www.redefinery.com/index.php>
* [The Coding Train ](https://www.youtube.com/user/shiffman)by Daniel Shiffman

### More resource list

* [ NoSleepCreative motion design coding resources](https://papaly.com/duitbetter/9kjal/motion-code)
* <https://zacklovatt.com/ae-scripting-resources>

## FAQs

### What are some recommended scripts to use?

| Type | Scripts                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Free | <p></p><ul><li><a href="https://www.videocopilot.net/blog/2018/05/fx-console-updated-to-v1-0-3/">FX Console</a></li><li><a href="https://aescripts.com/ease-and-wizz/">Ease & Whizz</a></li><li><a href="https://aescripts.com/label-maker/">Laber Maker</a></li><li><a href="https://aescripts.com/project-cleaner/">Project Cleaner</a></li><li><a href="https://www.battleaxe.co/downloads">Buttcapper</a></li><li><a href="https://aescripts.com/repositionanchorpoint/">RepositionAnchorPoint</a></li><li>EaseCopy</li><li>Saber</li></ul> |
| Paid | <p></p><ul><li>Flow</li><li>Ray Dynamic Color</li><li>Ray Dynamic Texture</li><li>Overlord</li><li>Gifgun</li><li>Kbar or Quick Menu</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                  |

### Why should I learn scripting?

### I know how to use expressions but how to get to the next level?

I usually recommend people to watch FXPhd training on Introduction to After Effects Scripting. From there on, you should be confident enough to pave your own path; yes it is that magical.

### How do I learn automation?

Automation is a concept; there is no standard technique. You need to have the foundations of coding and scripting to create your automation workflow.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nosleepcreative.com/after-effects/getting-started-with-scripting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
