Plugin -> Scripting

  1. Purpose
  2. How to execute scripts
  3. How to write your own scripts
  4. Implementations details
  5. Scripts
    1. Scripts in JavaScript
    2. Scripts in Python
  6. Advanced settings


Use it to automate small tasks for which no any existing plugin can do i.e.

  • additional quality tests for which no validator test cases are available
  • automatically entering data in very specific situations (i.e. sequences of house numbers)
  • importing from a custom file format not supported by JOSM
  • exporting to a custom file format not supported by JOSM

How to execute scripts

The scripting plugin allows you to run scripts within JOSM.

You can run scripts from console or from files. If you pick files, then latest scripts will appear in "scripting" menu. See also

How to write your own scripts

Please carefully inspect both resources:

To write functional scripts than "josm.alert(;" you should combine examples from multiple pages, for example:

Implementations details

The plugin includes a embedded scripting engine for Javascript based on Mozilla Rhino and a Javascript API for the JOSM application objects.
Alternatively, you can use any scripting language which provides a JSR-223 compatible scripting engine, in particular Groovy, Python, or Ruby.

Source code at GitHub.


Scripts in JavaScript

Scripts in Python

  • Help/Plugin/Scripting/Python - various small scripts that are meant to illustrate how to do one thing.
  • Help/Plugin/Scripting/Python/SurfaceTypesOfRoutes - (Interesting for cycle routes, both loops and linear ones). Short piece of code, but illustrates some interesting concepts and reports on OSM data. Doesn't make changes to the data
  • Help/Plugin/Scripting/Python/RCN_Route_Validator - This is not a trivial script anymore. It does a lot in a complicated field (networks of cycle node routes with numbered nodes), makes changes to relations, writes to a file that can be pasted to the wiki. Analyzes routes, but also networks of routes or collections of networks of routes, depending on the selection in JOSM when the script was run.
  • AutoAddIntersections (needs UtilsPlugin2) - Adds command queue listener that will perform utilsplugin2's AddNodesAtIntersections command after encountering Extrude command. (See #7991)
    Run once per JOSM session.

Advanced settings

Search for scripting. substring.

Back to Plugin Help
Back to Main Help

Last modified 2 years ago Last modified on 2021-08-08T13:48:25+02:00