Scriptable

Automation using JavaScript

1.7.16 for iPhone, iPad
Free
9.8

338 Ratings

Update Date

2024-02-15

Size

26.5 MB

Screenshots for iPhone

iPhone
Scriptable Description
Scriptable is an automation tool that enables you to write scripts that integrates with native features of iOS such as files, calendars, reminders, documents and much more.

An extensive support for widgets enables you to write your own widgets using JavaScript and run the scripts on your Home Screen. Your widgets can show any data and be customised to look just the way you want.

With Siri Shortcuts you can present images, tables and more in Siri as well as making Siri read out loud a text when you run a script from a Siri Shortcut.

There's a growing gallery of scripts to get you started with Scriptable.

Here’s a few examples of scripts you can create:

- Ask Siri whether a web service is down.
- Create a widget that shows data from your weather station.
- Postpone the next event in your calendar half an hour.
- Check what is currently on TV.
- Manage a list of movies you would like to watch.
- Upload files to an image optimizer and store a URL to the optimized image.
- Receive a notification with the weather report every morning.
- Create todos with prefilled data in your favorite todo app using URL schemes.

Features include:

- Write and run JavaScript.
- Auto complete of variable names, functions, keywords and properties as you type.
- Access lots of native iOS features from your JavaScript code, including managing files, calendars, reminders, contacts, photos, location, pasteboard, web views and more.
- Create your own widgets. Your scripts run on the Home Screen without needing to open the app.
- Siri Shortcuts enabling you to present images, tables, websites, HTML and more in Siri as well as making Siri read out loud a text.
- Support for input and output parameters in Siri Shortcuts.
- Easily schedule rich notifications to run your scripts periodically.
- Work with files and directories from third party apps using File Bookmarks.
- Synchronise scripts to all of your devices using iCloud Drive.
- Scripts are stored as plain JavaScript files and can be browsed using the Files app.
- Assign one of over 800 glyphs and a color to a script to easily identify it in your directory of scripts.
- Run scripts directly on your Lock Screen and Home Screen using widgets.
- Run a script by 3D touching the app icon.
- Run a script from a share sheet and process the inputs.
- Schedule notifications and run a script directly from a notification.
- URL schemes enabling you to run scripts from other apps.
- Support for x-callback-url enabling advanced integration with other apps that support x-callback-url.
- Export and share scripts.
- Example scripts helping you get started creating your own scripts.
- Extensive documentation for all the native APIs you can use in your scripts. Available offline in the app and online on docs.scriptable.app.
- View the documentation in a separate window on iPad.
- Support for dark mode.
- Customise the editor to your liking.
Scriptable 1.7.16 Update
2024-02-15
The date in Contact.birthday will now fallback to using the current year when no year is set.
More Information
Price:
Free
Version:
1.7.16
Size:
26.5 MB
Update Date:
2024-02-15
Developer:
Simon B. Støvring
Language:
Arabic Chinese Danish Dutch English Finnish German Hebrew Italian Japanese Korean Malay Norwegian Bokmål Portuguese Russian Spanish Swedish Thai Turkish

Safe to Download

AppPure.com and the download link of this app are 100% safe. The download link of this app will be redirected to the official App Store site, thus the app is original and has not been modified in any way.

Got it
X
Share

Share this page with your friends if you find it useful

Facebook Linkedin Pinterest Tumblr Twitter Whatsapp Line
1.7.16 2024-02-15
The date in Contact.birthday will now fallback to using the current year when no year is set.
1.7.14 2024-01-04
- Adds Data.fromBytes() to create a data object from an array of bytes.
- Fixes an issue where the documentation for parameters and return values was not visible.
1.7.13 2023-11-03
Fixes issue where background colors were sometimes not rendered in widgets.
1.7.12 2023-11-02
Improves stability of widgets on iOS 17.
1.7.11 2023-10-10
Fixes issues with checking for authorization when using specific APIs and improves error messages.
1.7.10 2023-10-04
Fixes issues with checking for authorization when using specific APIs.
1.7.9 2023-09-30
Fixes an issue where authorizing to access the calendar would fail.
1.7.8 2023-09-25
Fixes an issue where widgets could not find the selected script.
1.7.7 2023-09-24
Fixes an issue introduced in 1.7.6 that caused widgets to render incorrectly.
1.7.5 2023-04-24
- Settings has a slightly refreshed look.
- Fixes an issue where the Contact API returned an error on newer versions of iOS.
1.7.4 2022-11-18
- Fixes an issue where links would not work in widgets on iOS 15.
- Fixes an issue where widgets with large background images would not be rendered.
1.7.2 2022-11-13
- Widgets would not show a background when running on iOS 15.
- The Find & Replace button would sometimes not be shown in the keyboard toolbar when running on an iPad.
1.6.12 2021-12-02
This update fixes an issue where scripts would sometimes not run when launched from the Home screen. If you're still seeing issues with this, please remove the script from your Home screen and add it again.
1.6.11 2021-10-03
Fixes an issue where functions defined in web views by Scriptable would sometimes not be called. This affected scripts that evaluated JavaScript in a web view and completed the evaluation by invoking the global completion() function.
1.6.10 2021-10-02
Fixes an issue where multicolored SF Symbols did not work correctly on iOS 15.
1.6.9 2021-09-30
Widget previews should work correctly on all devices now. In order to be better prepared for future devices the error handling has been improved.devices. In those cases the widget preview will be slightly inaccurate with a message detailing this.
1.6.8 2021-09-29
This update fixes an issue where widget previews did not work when Display Zoom was enabled under Display & brightness in the Settings app.
1.6.7 2021-09-29
This build fixes a bug introduced in the previous build where widget previews didn't work properly on a some iPhone models.
1.6.6 2021-09-29
- Adds support for previewing extra large widgets on iPads running iOS 15.
- The size of widget previews in the app now more accurately resembles the size when the widget is placed on the Home Screen.
- Works around an issue in iOS 15 where URLs are not persisted when configuring a widget.
- Fixes an issue where evaluating JavaScript in a WebView would not complete when running iOS 15.
1.6.3 2021-01-05
- Bugfix: Sometimes scripts wouldn't run from the Home Screen.
- Bugfix: Improves documentation for some particular APIs.
1.6.2 2020-12-09
- Bugfix: Improved the reliability of the "Refresh all widgets" Shortcuts action. Refreshing widgets will the app is in the foreground seem much more reliable than during it directly from the Shortcuts app. Therefore the action now opens the Scriptable app to fresh the widgets.
- Bugfix: Selecting lines with Shift + Down Arrow and then toggling a comment on those lines, which also toggle a comment on the next unselected line.
1.6.1 2020-11-05
- New: Scripts in the gallery can now be shared with a link.
- Bugfix: A few layout issues in the gallery have been fixed.
1.6 2020-11-05
- New: The new gallery contains example scripts to get you started using Scriptable. Have a script you'd like to share with the community? You can submit your script for consideration to be included in the gallery over at gallery.scriptable.app/submit
- New: Create dynamic colors with the Color.dynamic(lightColor, darkColor) function. These colors automatically adjust to match the system appearance and work great with widgets.
- New: The LinearGradient have new startPoint and endPoint properties to control the direction of the gradient.
- New: FileManger has a new cacheDirectory() function to get the path to the directory suitable for caching data.
- New: Request has a new timeoutInterval property that specifies the duration a connection attempt must remain idle for the request to timeout.
- New: Reminder has a new isOverdue property that indicates if a reminder is overdue.
- New: Uses the scriptable:///run/{scriptName} URL scheme when running a script. The old scriptable:///run?scriptName={scriptName} is still supported. The new one is compatible with more online services when defining a redirect URL as part of an OAuth flow.
- Bugfix: Accessing the hex property on a Color object would sometimes cause the app to crash.
- Bugfix: Scripts would sometimes fail when it used the CallbackURL API, had "Always Run in App" enabled and was running from the Share Sheet.
- Bugfix: Fixes typos in the documentation.
1.5.3 2020-10-10
- Bugfix: Sometimes UI wouldn't be shown when presented from a script running in the action extension.
- Bugfix: Providing corner radii larger than half the width or height when calling addRoundedRect() would cause the app to crash.
- Bugfix: Sometimes multiline texts wouldn't respect the alignment in a widget.
1.5.2 2020-10-06
- Bugfix: Images would sometimes be resized when loaded through a Shortcuts actions. This was necessary pre-iOS 14 but is no longer necessary with the new in-app intent handling.
1.5.1 2020-10-05
- New: Widgets now support displaying texts and images in grids. Call addStack() on a ListWidget to add a horizontal stack to the widget. You can even nest stacks to create a mix of vertical and horizontal layouts.
- New: Texts, images and stacks in a widget can now open a URL when tapped. This can be used to configure different tap targets in a widget, each opening different URLs when tapped.
- New: Adds the SFSymbol API which can be used to add SF symbols to widgets.
- New: Adds settings on WidgetImage to configure if it should be resizable and if the image should fit or fill the available space. These new settings may come in handy when showing an SF symbol as an image.
- New: WidgetText has a new minimumScaleFactor property. Set it to scale down the text if it does not fit into the available space.
- New: Add shadows to texts with the new shadowRadius, shadowColor and shadowOffset properties on WidgetText.
- New: Use the new addDate() function on ListWidget and WidgetStack to add a date that updates periodically without running the script. Use the returned instance of WidgetDate to configure how the date is displayed.
- New: The ListWidget has a new refreshAfterDate property. Use this to specify the date which a widget can refresh after. The widget is not guaranteed to refresh at this exact date. The property is most suited to ensure that widgets do not refresh too often.
- New: You can now use the Location API in a widget.
- New: The script selector now shows icons when configuring a widget.
- New: Adds Shortcuts action to refresh all Scriptable widgets.
- New: There are two new example scripts called “Random Scriptable API” and “Read MacStories”.
- Bugfix: This update improves the stability of widgets and fixes an issue where widgets would sometimes have their content swapped.
- Bugfix: Constructing a Color object would sometimes fail when passing an alpha value.
- Bugfix: The app would sometimes crash when setting up the schedule for a notification.
- Bugfix: The documentation for addStack() mentioned that calling the function would return an instance of WidgetSpacer instead of a WidgetStack.
- Bugfix: The FileManager would sometimes show a warning saying that a file did not exist even though it did.
1.5 2020-09-16
- New: The new ListWidget API can be used to create widgets that display a list of texts and images. These widgets can be displayed on the Home screen on iOS 14.
- New: The new "News in Widget" example script shows how to build a widget. You find the example script in the in-app settings.
- New: Scriptable's Shortcuts actions now use the new in-app intent handling on iOS 14. By doing that, the actions can now use file bookmarks and can utilise more memory. Please visit the in-app settings to learn more about file bookmarks.
- New: Scripts have new colors to better fit in with modern versions of iOS.
- New: Scripts can now be added to the Home screen from the script's settings.
- New: The response from executing a Request now contains the cookies set by the server.
- New: Use the new titleFont and subtitleFont properties on UITableCell to set the font of titles and subtitles in tables.
- New: Use the new setFont() function on DrawContext to specify the font to be used when drawing text to the context.
- Deprecated: setFontSize() on DrawContext have been deprecated. Use the new setFont() function instead.
- Bugfix: Sometimes getImage() on DrawContext would throw an error when nothing but a text had been drawn to the context.
1.4.14 2020-07-27
- Bugfix: Reminder.dueDateIncludesTime did not work on recent version of iOS.
- Bugfix: WebViews would not be correctly removed from memory, causing videos to keep playing even after the script have finished running and the web view have been dismissed.
- Bugfix: WebView.evaluateJavaScript() would sometimes fail with an error saying that two JavaScripts were being evaluated at the same time.
1.4.13 2020-06-13
- Bugfix: A cancel action would automatically be appended to alerts on the iPad, even when the alert had actions associated with it.
- Bugfix: Fixes typos in the documentation.
1.4.12 2020-06-04
- Bugfix: The app would sometimes crash when adding a cancel action to an alert and presenting it on the iPad.
1.4.11 2020-05-31
- New: There's two new app icons to choose from.
- New: Adds DocumentPicker.exportData() for exporting a Data object to a file.
- New: When exporting a file with the DocumentPicker, the filename will now default to the current date and time.
- Bugfix: When picking a countdown duration using the DatePicker API, the duration of the countdown would default to the current hour and minute of the day.
- Bugfix: When using the Alert API on an iPad and presenting with presentSheet(), the promise was not fulfilled when cancelling the operation by tapping outside the sheet.
- Bugfix: A few minor improvements to the documentation.
1.4.10 2020-05-02
- New: Improved support for pointers on iPadOS.
- Bugfix: On the iPad the log could be collapsed even when it was placed on the left- or right-hand side of the script. After collapsing the log, it could not be expanded. Collapsing the log is now properly disabled when it's placed on the left- or right-hand side of the screen.
- Bugfix: The promised returned by Safari.openInApp() completed too soon, making it impossible to present a table or a new website after Safari was dismissed.
- Bugfix: Returning an empty string from the Run Script Inline Shortcuts action would crash Shortcuts.
- Bugfix: A few minor improvements to the documentation.
1.4.9 2020-03-05
- New: When the log is expanded you'll get an option to export and share the log.
- New: There's now a setting to hide the date and time from messages in the log. This can be enabled and disabled when the log is expanded.
- New: The QuickLook, UITable, WebView and Safari APIs now lets you pass a parameter indicating that a view should be presented in fullscreen. For example myTable.present(true). This is particularly useful on the iPad.
- New: Use Reminder.dueDateIncludesTime to specify if the due date on a reminder should include a time upon assignment. This lets you create reminders that are due on a date but doesn't have a time. The property defaults to true.
- New: Use the new instance method loadFile() on WebView to load a file into a web view.
- Bugfix: Improves error message shown when attempting to invoke QuickLook.present() on an object that does not support quick looking.
1.4.8 2020-01-19
- New: The JetBrains Mono font is now available to be used in the editor.
- Bugfix: Sometimes files couldn't be accessed when they were passed into the "Run Script" shortcut action and the action was configured to open the app.
- Bugfix: FileManager.fileName() would return URL encoded file names.
1.4.7 2020-01-10
- Bugfix: A bug had snuck into the previous release causing some scripts to timeout prematurely when running in Shortcuts or with Siri. When this happened, you would get an error saying that the script completed without returning an output, presenting a UI or having Siri speak a message and that you should call Script.complete(), even though Script.complete() already got called. This is now fixed.
- Bugfix: The link to the forum was no longer working. This have now been fixed.
1.4.6 2020-01-09
- New: Returning a value in a script using JavaScript’s “return” keyword will now provide the value as output when running the script in a shortcut. As a result, many scripts written in the "Run Inline Script" action, which was introduced in the previous update, can now be made more concise.
- Bugfix: Scrips that invoke Script.setShortcutOutput() or that return a value will now finish faster when running in a shortcut.
- Bugfix: Shows a proper error message when running a script in a shortcut takes too long.
1.4.5 2020-01-08
- New: There is a new "Run Inline Script" shortcut action. The new action doesn't run an existing script but instead lets you write any script in the multiline text field that's shown when tapping "Show More". The action can do anything that the existing "Run Script" action can do.
- Bugfix: Sometimes the Request API would returned cached data which wasn't expected.
- Bugfix: When passing an image as input to the "Run Script" action in Shortcuts and checking the option to open Scriptable to run the script, the image would not be properly passed into Scriptable.
- Bugfix: Fixes incorrect comments in the "Welcome to Scriptable" script that is installed when first opening the app.
1.4.4 2019-11-12
This update includes fixes for various minor bugs and visual glitches.
1.4.3 2019-10-02
A bug had snuck into the previous build causing right aligned texts in a UITable to be clipped under some conditions.

New in 1.4.2:
- Adds a call to Script.complete() in the example scripts. It's a good idea to call Script.complete() when running a script from Siri or in the Shortcuts app. This will make the script terminate faster. Please read the documentation for more information on this.
- Fixes some minor layout issues.
1.4.2 2019-09-30
- Adds a call to Script.complete() in the example scripts. It's a good idea to call Script.complete() when running a script from Siri or in the Shortcuts app. This will make the script terminate faster. Please read the documentation for more information on this.
- Fixes some minor layout issues.
1.4.1 2019-09-25
This update adds icons to the context menu that is shown when long pressing a script. It also fixes a haandful of minor bugs.

New in version 1.4:

The focus of this update is to make Scriptable feel right at home on iOS 13 with a refreshed design, input and output parameters in Siri Shortcuts, support for opening the documentation in a new window and much more.

- New: Redesigned editor that takes better advantage of the screen. On the iPad, you can drag the log to place it either on the left, right or in the bottom.
- New: Pass input to a shortcut from the Shortcuts app and read it with args.shortcutParameter.
- New: Pass plain texts, URLs, images and files to a shortcut from the Shortcuts app and read it with args.plainTexts, args.urls, args.images and args.fileURLs.
- New: Return output from a script to the next shortcut in the Shortcuts app using Script.setShortcutOutput()
- New: The list of scripts have had a minor design refresh to make it feel less cluttered.
- New: Open the documentation in a new window on the iPad by pressing the ellipsis in the documentation and select "Open in New Window".
- New: Light and dark mode now respects the system appearance. You can override the theme in the settings.
- New: Quick Actions are now available on the iPad. Add Quick Actions from the settings to quickly run a script by long pressing the app icon on the home screen.
- New: The order of scripts can now be synced between devices using iCloud. Enable this from the settings.
- New: Use ESC or CMD+. on an external keyboard to dismiss any view presented with the QuickLook API.
- New: The documentation now shows if properties are read-only. This have also been added to the online documentation.
- New: Adds a Timer API which can be used to schedule timers that fire after a time interval.
- New: Adds a DateFormatter API to create textual representations of dates and parse strings into dates.
- New: Adds a RelativeDateTimeFormatter API that creates a textual representation communicating the amount of time between two dates.
- New: Adds Device.isUsingDarkAppearance() which returns true if the device is currently using the dark appearance.
- New: Adds fileManager.creationDate(), fileManager.modificationDate() and fileManager.fileSize().
- New: Adds Photos.save() which saves an image to your photo library.
- New: Adds DocumentPicker.openFile() and DocumentPicker.openFolder() which makes it easier to present a document picker that allows picking any single file or folder.
- New: Adds Calendar.createForReminders() and Calendar.findOrCreateForReminders() APIs which creates new reminder lists.
- New: Adds calendar.remove() which removes a calendar, for example a reminder list.
- New: Adds fileManager.allFileBookmarks() which is be used to programmatically get a list of all the bookmarks you have created.
- New: Adds a new property "dates" on a Contact. This hold dates that are important to a contact.
- New: Adds new properties on Contact to check which values can be set and read on a contact. This can be used to check if a contacts container supports a particular feature.
- New: xmlParser.didStartElement() now takes two parameters instead of one. In addition to the element name, a key value pair containing all attributes associated with the element is now provided.
- New: Adding a closing curly bracket will automatically adjust the indentation if necessary.
- New: The "Reminders Due Today" example script have been updated to be more readable and show how reminders can be marked as completed and tables can be refreshed when cells are selected.

Please see "What's New" in the settings for the full list of changes in this version.
1.4 2019-09-19
The focus of this update is to make Scriptable feel right at home on iOS 13 with a refreshed design, input and output parameters in Siri Shortcuts, support for opening the documentation in a new window and much more.

- New: Redesigned editor that takes better advantage of the screen. On the iPad, you can drag the log to place it either on the left, right or in the bottom.
- New: Pass input to a shortcut from the Shortcuts app and read it with args.shortcutParameter.
- New: Pass plain texts, URLs, images and files to a shortcut from the Shortcuts app and read it with args.plainTexts, args.urls, args.images and args.fileURLs.
- New: Return output from a script to the next shortcut in the Shortcuts app using Script.setShortcutOutput()
- New: The list of scripts have had a minor design refresh to make it feel less cluttered.
- New: Open the documentation in a new window on the iPad by pressing the ellipsis in the documentation and select "Open in New Window".
- New: Light and dark mode now respects the system appearance. You can override the theme in the settings.
- New: Quick Actions are now available on the iPad. Add Quick Actions from the settings to quickly run a script by long pressing the app icon on the home screen.
- New: The order of scripts can now be synced between devices using iCloud. Enable this from the settings.
- New: Use ESC or CMD+. on an external keyboard to dismiss any view presented with the QuickLook API.
- New: The documentation now shows if properties are read-only. This have also been added to the online documentation.
- New: Adds a Timer API which can be used to schedule timers that fire after a time interval.
- New: Adds a DateFormatter API to create textual representations of dates and parse strings into dates.
- New: Adds a RelativeDateTimeFormatter API that creates a textual representation communicating the amount of time between two dates.
- New: Adds Device.isUsingDarkAppearance() which returns true if the device is currently using the dark appearance.
- New: Adds fileManager.creationDate(), fileManager.modificationDate() and fileManager.fileSize().
- New: Adds Photos.save() which saves an image to your photo library.
- New: Adds DocumentPicker.openFile() and DocumentPicker.openFolder() which makes it easier to present a document picker that allows picking any single file or folder.
- New: Adds Calendar.createForReminders() and Calendar.findOrCreateForReminders() APIs which creates new reminder lists.
- New: Adds calendar.remove() which removes a calendar, for example a reminder list.
- New: Adds fileManager.allFileBookmarks() which is be used to programmatically get a list of all the bookmarks you have created.
- New: Adds a new property "dates" on a Contact. This hold dates that are important to a contact.
- New: Adds new properties on Contact to check which values can be set and read on a contact. This can be used to check if a contacts container supports a particular feature.
- New: xmlParser.didStartElement() now takes two parameters instead of one. In addition to the element name, a key value pair containing all attributes associated with the element is now provided.
- New: Adding a closing curly bracket will automatically adjust the indentation if necessary.
- New: The "Reminders Due Today" example script have been updated to be more readable and show how reminders can be marked as completed and tables can be refreshed when cells are selected.

Please see "What's New" in the settings for the full list of changes in this version.
1.3.4 2019-06-11
- Bugfix: Fixed issue where Calendar.presentPicker returned an empty array when selecting multiple calendars.
- Bugfix: Web views can not be presented with myWebView.present() even after evaluating JavaScript in the web view.
- Bugfix: Updated the documentation to explicitly say that UITableRows onSelect must have a value for dismissOnSelect to have an effect.
- Bugfix: Updated documentation of properties on the Contact bridge to make it clear that when updating email addresses, phone numbers, social profiles and postal addresses, the entire array of values must be provided.
- Bugfix: Fixed various typos in the documentation and example scripts.
1.3.3 2019-05-01
This update fixes an issue where using file bookmarks would sometimes result in permission errors when the underlying file path was used.
1.3.2 2019-04-25
- Bugfix: Improves auto completion in scripts with special characters.
- Bugfix: Fixed issue where lists were not correctly shown in the documentation, e.g. the list of supported notification sounds.
- Bugfix: Fixed issue where DrawContext.opaque incorrectly stated that the default value was false.
- Bugfix: Fixed issue where Contact.birthday was not always persisted.
- Bugfix: Fixed various typos in the documentation.
1.3.1 2019-04-01
- Bugfix: Fixed issue wherre Siri Shortcuts weren't "donated" when the script was run from the list of scripts.
- Bugfix: The "Welcome to Scriptable" script referenced the old "gear" icon for accessing script settings but it now references the new "toggles" icon.

In case you missed it, here is what is new in 1.3:

- New: The new rich notification composer lets you easily create notifications to run your scripts on a schedule. There’s a lot parameters for tweaking your notification including title, body, sound and the buttons to display in the notification. Access the rich notification composer from settings and script settings.
- New: Add multiple Siri Shortcuts to a script. Each shortcut can define a set of arguments that is passed to your script when running it from a shortcut. This lets you vary your script based on the shortcut that was used to run it.
- New: Add bookmarks to files and folders to work with those from your scripts even if the files aren’t stored in Scriptable documents folder. After you have created a bookmark from settings, you can use the bookmarkedPath(name) function on a FileManager to get a path to the file or folder.
- New: Use importModule to import one script into another. See the documentation on the "importModule" function and the global variable "module”.
- New: Run scripts directly from the list of scripts. Tap the three dots to edit the script.
- New: Run scripts from the home screen. Visit the settings of a script to add it to your home screen. You can use the new config.runsFromHomeScreen to determine if a script is run from the home screen.
- New: There’s now a list of all your shortcuts in the settings. You can also add a new shortcut from here.
- New: The DatePicker API will display a user interface for selecting a date, a time, both or the duration of a timer.
- New: Adds downloadFileFromiCloud(filePath), isFileStoredIniCloud(filePath) and isFileDownloaded(filePath) on FileManager. These new functions make it easier to work with files in iCloud.
- New: read(filePath), readString(filePath) and readImage(filePath) on FileManager will now show warnings when attempting to perform operations on a file that does not exist. Remember to use fileExists(filePath) to check if a file exists.
- New: You can now log warnings using console.warn() or the global logWarning() functions. Warnings behave like regular log statements but will have a special appearance in the console.
- New: There’s a new setting in the documentation to show deprecated APIs. It is not recommended for new scripts to use deprecated APIs.
- New: Increased the contrast of texts in the documentation.
- New: Setting the “openEditor” query parameter to “true” in the scriptable:///run URL scheme will show the editor when running the script opposed to running directly from the list of scripts.
- New: The “Quick Actions” setting screen now shows icons of the scripts.
- New: Shows support e-mail address in settings when device is not configured to send mails.
- Deprecated: args.all and args.length. Please use args.plainTexts, args.urls, args.fileURLs and args.images to examine the arguments supplied by a share sheet.
- Deprecated: Notification.current(). Use args.notification instead.
- Deprecated: URLScheme.allParameters() and URLScheme.parameter(name). Use args.queryParameters instead.
- Bugfix: Adds missing WebView.loadURL static function.
- Bugfix: Fixed issue where UITableRow.backgroundColor was not respected in Siri.
- Bugfix: Fixed issue where links to the scriptable:/// URL scheme were not opened from a WebView.
- Bugfix: Fixed size of icons in Spotlight.
- Bugfix: Fixed issue where changes to a cells title or subtitle colors weren’t reflected when reloading.
- Bugfix: Fixed issue where the number of messages in the log was not visible.
- Bugfix: Fixed an issue where the order of the scripts on the “Quick Actions” setting screen could be incorrect.
1.3 2019-03-28
- New: The new rich notification composer lets you easily create notifications to run your scripts on a schedule. There’s a lot parameters for tweaking your notification including title, body, sound and the buttons to display in the notification. Access the rich notification composer from settings and script settings.
- New: Add multiple Siri Shortcuts to a script. Each shortcut can define a set of arguments that is passed to your script when running it from a shortcut. This lets you vary your script based on the shortcut that was used to run it.
- New: Add bookmarks to files and folders to work with those from your scripts even if the files aren’t stored in Scriptable documents folder. After you have created a bookmark from settings, you can use the bookmarkedPath(name) function on a FileManager to get a path to the file or folder.
- New: Use importModule to import one script into another. See the documentation on the "importModule" function and the global variable "module”.
- New: Run scripts directly from the list of scripts. Tap the three dots to edit the script.
- New: Run scripts from the home screen. Visit the settings of a script to add it to your home screen. You can use the new config.runsFromHomeScreen to determine if a script is run from the home screen.
- New: There’s now a list of all your shortcuts in the settings. You can also add a new shortcut from here.
- New: The DatePicker API will display a user interface for selecting a date, a time, both or the duration of a timer.
- New: Adds downloadFileFromiCloud(filePath), isFileStoredIniCloud(filePath) and isFileDownloaded(filePath) on FileManager. These new functions make it easier to work with files in iCloud.
- New: read(filePath), readString(filePath) and readImage(filePath) on FileManager will now show warnings when attempting to perform operations on a file that does not exist. Remember to use fileExists(filePath) to check if a file exists.
- New: You can now log warnings using console.warn() or the global logWarning() functions. Warnings behave like regular log statements but will have a special appearance in the console.
- New: There’s a new setting in the documentation to show deprecated APIs. It is not recommended for new scripts to use deprecated APIs.
- New: Increased the contrast of texts in the documentation.
- New: Setting the “openEditor” query parameter to “true” in the scriptable:///run URL scheme will show the editor when running the script opposed to running directly from the list of scripts.
- New: The “Quick Actions” setting screen now shows icons of the scripts.
- New: Shows support e-mail address in settings when device is not configured to send mails.
- Deprecated: args.all and args.length. Please use args.plainTexts, args.urls, args.fileURLs and args.images to examine the arguments supplied by a share sheet.
- Deprecated: Notification.current(). Use args.notification instead.
- Deprecated: URLScheme.allParameters() and URLScheme.parameter(name). Use args.queryParameters instead.
- Bugfix: Adds missing WebView.loadURL static function.
- Bugfix: Fixed issue where UITableRow.backgroundColor was not respected in Siri.
- Bugfix: Fixed issue where links to the scriptable:/// URL scheme were not opened from a WebView.
- Bugfix: Fixed size of icons in Spotlight.
- Bugfix: Fixed issue where changes to a cells title or subtitle colors weren’t reflected when reloading.
- Bugfix: Fixed issue where the number of messages in the log was not visible.
- Bugfix: Fixed an issue where the order of the scripts on the “Quick Actions” setting screen could be incorrect.
1.2.3 2018-12-31
- New: Adds UITableRow.backgroundColor to set the background color of a row.
- Bugfix: Fixed issue where notifications would play the default system sound when setting Notification.sound to “piano_error”.
1.2.2 2018-12-21
- Bugfix: Updates “Is Slack down?” example script to accommodate for recent changes on Slacks status webpage.
- Bugfix: Fixed styling of table view cells in script settings.
- Bugfix: Fixed issue where the content of UITableRows could not be read when the cell was being tapped.
- Bugfix: Fixed issue where making changes to a UITable would cause the app to crash if UITable.reload wasn’t called. Remember that you should always call UITable.reload after making changes to have those changes reflected in the UI.

In case you missed it, here’s what was new in 1.2:

Using the new Notification API, you can schedule notifications to be delivered at a later time. You can configure the title, body, sound and much more — and you can even run a script inside the notification by 3D touching or long pressing the notification. Adding buttons to a notification allows you to perform actions such as opening Scriptable to run a script or opening any other app that has a URL scheme.

- New bridge: The new Notification bridge lets you schedule notifications to be delivered at a later time. See the documentation for more details.
- New: Added config.runsInNotification to determine if a script is running in a notification.
- New: Added “Schedule Notification” example script which provides a simple UI to schedule a notification that runs any of your scripts.
- New: Added “Remove Notification” example script for removing pending notifications.
- New: WebView now supports evaluating JavaScript asynchronously. When passing true as the second argument of WebView.evaluateJavaScript, a global completion function will be available when evaluating the JavaScript. Call this completion function to terminate the evaluated JavaScript. See the documentation for more details.
- New: The log is now available when evaluating JavaScript in an instance of WebView.
- New: Added Mail.preferredSendingEmailAddress which specifies the preferred e-mail to use when sending a mail. If no account with the preferred e-mail is set up, the default e-mail address is used.
- New: Added support for saving changes made to a calendars title or color. Change the value and then invoke Calendar.save() to persist the changes.
- New: To make it easier to differentiate between app settings and script settings, there’s now a new icon for script settings.
- New: Added dot (.) button to the tools above the keyboard.
- New: You can now duplicate a script from the script settings.
- New: The view presented when running a script from a share sheet have had its size increased.
- New: Uses the dark keyboard when using the blue app theme. This should make the editor easier on the eyes.
- New: The new Location.reverseGeocode function performs reverse-geocoding based on a coordinate.
- Bugfix: Ensures UI presented in Siri is correctly sized.
- Bugfix: Fixed issue where scripts run from the share sheet could not properly read from the keychain.
- Bugfix: Fixed issue where images were not correctly shared when using the ShareSheet API.
- Bugfix: Fixed issue where setting opaque to false on a DrawContext did not always have the intended effect.
- Bugfix: Fixed issue where the icon in the import button did not have the right color when importing an example script.
- Bugfix: Fixed issue where the app would crash when showing a UITable that contained a cell with an invalid width weight.
- Bugfix: Fixed issue where a second invocation of Dictation.start() would never complete.
- Bugfix: Fixed issue where images that were left or right aligned in UITableCells would have some extra spacing to the sides.
- Bugfix: Fixed issue where images imported from the Share Sheet using a script with “Always run in app” enabled could have an incorrect rotation.
- Bugfix: Fixed issue where images imported from the Share Sheet were sometimes included twice in args.images.
1.2.1 2018-12-20
- New: The new Location.reverseGeocode function performs reverse-geocoding based on a coordinate.
- Bugfix: Fixed issue where images imported from the Share Sheet using a script with “Always run in app” enabled could have an incorrect rotation.
- Bugfix: Fixed issue where images imported from the Share Sheet were sometimes included twice in args.images.

In case you missed it, here’s what was new in 1.2:

Using the new Notification API, you can schedule notifications to be delivered at a later time. You can configure the title, body, sound and much more — and you can even run a script inside the notification by 3D touching or long pressing the notification. Adding buttons to a notification allows you to perform actions such as opening Scriptable to run a script or opening any other app that has a URL scheme.

- New bridge: The new Notification bridge lets you schedule notifications to be delivered at a later time. See the documentation for more details.
- New: Added config.runsInNotification to determine if a script is running in a notification.
- New: Added “Schedule Notification” example script which provides a simple UI to schedule a notification that runs any of your scripts.
- New: Added “Remove Notification” example script for removing pending notifications.
- New: WebView now supports evaluating JavaScript asynchronously. When passing true as the second argument of WebView.evaluateJavaScript, a global completion function will be available when evaluating the JavaScript. Call this completion function to terminate the evaluated JavaScript. See the documentation for more details.
- New: The log is now available when evaluating JavaScript in an instance of WebView.
- New: Added Mail.preferredSendingEmailAddress which specifies the preferred e-mail to use when sending a mail. If no account with the preferred e-mail is set up, the default e-mail address is used.
- New: Added support for saving changes made to a calendars title or color. Change the value and then invoke Calendar.save() to persist the changes.
- New: To make it easier to differentiate between app settings and script settings, there’s now a new icon for script settings.
- New: Added dot (.) button to the tools above the keyboard.
- New: You can now duplicate a script from the script settings.
- New: The view presented when running a script from a share sheet have had its size increased.
- New: Uses the dark keyboard when using the blue app theme. This should make the editor easier on the eyes.
- Bugfix: Ensures UI presented in Siri is correctly sized.
- Bugfix: Fixed issue where scripts run from the share sheet could not properly read from the keychain.
- Bugfix: Fixed issue where images were not correctly shared when using the ShareSheet API.
- Bugfix: Fixed issue where setting opaque to false on a DrawContext did not always have the intended effect.
- Bugfix: Fixed issue where the icon in the import button did not have the right color when importing an example script.
- Bugfix: Fixed issue where the app would crash when showing a UITable that contained a cell with an invalid width weight.
- Bugfix: Fixed issue where a second invocation of Dictation.start() would never complete.
- Bugfix: Fixed issue where images that were left or right aligned in UITableCells would have some extra spacing to the sides.
1.2 2018-12-18
Using the new Notification API, you can schedule notifications to be delivered at a later time. You can configure the title, body, sound and much more — and you can even run a script inside the notification by 3D touching or long pressing the notification. Adding buttons to a notification allows you to perform actions such as opening Scriptable to run a script or opening any other app that has a URL scheme.

- New bridge: The new Notification bridge lets you schedule notifications to be delivered at a later time. See the documentation for more details.
- New: Added config.runsInNotification to determine if a script is running in a notification.
- New: Added “Schedule Notification” example script which provides a simple UI to schedule a notification that runs any of your scripts.
- New: Added “Remove Notification” example script for removing pending notifications.
- New: WebView now supports evaluating JavaScript asynchronously. When passing true as the second argument of WebView.evaluateJavaScript, a global completion function will be available when evaluating the JavaScript. Call this completion function to terminate the evaluated JavaScript. See the documentation for more details.
- New: The log is now available when evaluating JavaScript in an instance of WebView.
- New: Added Mail.preferredSendingEmailAddress which specifies the preferred e-mail to use when sending a mail. If no account with the preferred e-mail is set up, the default e-mail address is used.
- New: Added support for saving changes made to a calendars title or color. Change the value and then invoke Calendar.save() to persist the changes.
- New: To make it easier to differentiate between app settings and script settings, there’s now a new icon for script settings.
- New: Added dot (.) button to the tools above the keyboard.
- New: The view presented when running a script from a share sheet have had its size increased.
- New: Uses the dark keyboard when using the blue app theme. This should make the editor easier on the eyes.
- Bugfix: Ensures UI presented in Siri is correctly sized.
- Bugfix: Fixed issue where scripts run from the share sheet could not properly read from the keychain.
- Bugfix: Fixed issue where images were not correctly shared when using the ShareSheet API.
- Bugfix: Fixed issue where setting opaque to false on a DrawContext did not always have the intended effect.
- Bugfix: Fixed issue where the icon in the import button did not have the right color when importing an example script.
- Bugfix: Fixed issue where the app would crash when showing a UITable that contained a cell with an invalid width weight.
- Bugfix: Fixed issue where a second invocation of Dictation.start() would never complete.
- Bugfix: Fixed issue where images that were left or right aligned in UITableCells would have some extra spacing to the sides.
1.1.3 2018-11-24
This update makes all of Scriptables documentation available at docs.scriptable.app. The online documentation works very well next to Scriptable in Split View on an iPad. All of Scriptables documentation is still available offline in the app.

Visit the forum to get help, share your scripts and get inspiration for new scripts. The forum is located at talk.automators.fm.

- New: Online documentation is now available at docs.scriptable.app.
- New: Added link to online documentation from settings.
- New: URLs to the online documentation can now be shared from the app.
- New: The app can now open docs.scriptable.app URLs to present the documentation directly.
- New: Actions that can be performed using the scriptable:// URL scheme, can now also be performed using the universal link open.scriptable.app, e.g. open.scriptable.app/run?scriptName=Example. See the documentation for URLScheme for more information.
- New: Added Image.size to get the width and height of an image in pixels.
- New: Added Contact.organizationName, Contact.departmentName and Contact.jobTitle and Contact.namePrefix.
- New: Supports indenting multiple selected lines of text using the TAB key on an external keyboard.
- New: Shows indent and auto complete keyboard shortcut in the overlay displayed when holding down the Command key on an external keyboard.
- New: Use the Shirt+Command+7 keyboard shortcut on an external keyboard to toggle comment.
- Bugfix: Fixed issue where the TAB key couldn’t be used to indent code when the cursor was at the beginning of the line if the line wasn’t empty.
- Bugfix: Fixed issue where the last line of a script wouldn’t be totally visible when using an external keyboard.
- Bugfix: Fixed issue where Request.loadString() would sometimes return an error saying that the response could not be parsed into a string while the response was in fact a valid string.
- Bugfix: Fixed issue where the implementations of atob and btoa was swapped. Yes, this is one of the embarrassing ones.
1.1.2 2018-11-09
- New: Added Contact.urlAddresses to read and modify the URLs associated with a contact.
- New: Added Contact.note for reading and updating notes on a contact.
- New: Added atob and btoa global functions for conversion between strings and base 64 encoded strings.
- New: After presenting an instance of WebView, the URL and HTML of the web view can now be shared.
- New: WebView has a waitForLoad function which waits for the web view to finish loading a page. Use this with caution. Please refer to the documentation for details.
- Bugfix: Fixed issues where line numbers weren’t reported in the log.
- Bugfix: Fixed issue where documentation for FileManager.read and FileManager.readString was swapped.
- Bugfix: Fixed crash that would happen when attempting to open a URL with any other scheme than HTTP or HTTPS using Safari.openInApp.
- Bugfix: Fixed issue where presenting files stored in iCloud with QuickLook.present() in Siri would sometimes cause issues.
- Bugfix: Fixed issue where returning null in the Request.onRedirect handler would cause an error. Now it properly stops the redirect.
1.1.1 2018-11-03
- New: Added support for the latest devices and iOS 12.1.
- New: CalendarEvent has a new property named “attendees” that expose the attendees of an event.
- Bugfix: Fixed issue where comments weren’t correctly inserted when the “//“ button was pressed while the caret was on an empty line, e.g. in the beginning of a script.
- Bugfix: Fixed issue where Safari wouldn’t load in rare situations.
- Bugfix: Fixed issue where the app would crash when holding down backspace.
- Bugfix: Fixed various issues that could cause the app to crash.
1.1.0 2018-10-26
This update makes it easier to write scripts and discover APIs exposed by Scriptable. As you write scripts, the editor will suggest keywords, functions, properties and more. Tap on a suggestion to quickly insert it.

The update also adds support for selecting rows in a table, adding buttons to table rows and reloading a table while it is presented. These three new mechanisms provide for powerful interactions in your scripts. The new Watchlist example script shows how to use the new APIs.

New in this update:
- The editor suggests keywords, functions, properties and more as you type.
- UITableRows can now be selected. Use the “onSelect” and “dismissOnSelect” properties to specify the behaviour that should occur when a row is selected.
- Add buttons to a table using UITableRow.addButton(). Use the “onTap” and “dismissOnTap” properties to specify the behaviour that should occur when a button is tapped.
- UITable.reload() reloads a table after it is presented to reflect changes made to the the rows.
- UITable.present() function returns a promise that is fulfilled when the table is dismissed.
- The new Watchlist example script shows how to add buttons to tables, handle row selection and updating tables after they’re presented.
- The new Script bridge adds Script.complete(), which signals to the system that the script have completed. When a script is run with Siri, Scriptable use heuristics to determine if a script have completed. If a script completes too slowly, you should call Script.complete().
- The new Contact, ContactsGroup and ContactsContainer bridges enables reading and updating contacts stored in the address book.
- The WebView bridge now supports creating a web view to evaluate JavaScript on websites.
- The location returned by Location.current() now contains altitude, horizontal and vertical accuracy.
- The Location bridge supports specifying the desired accuracy. Set a low accuracy to get a location faster.
- QuickLook.present() now returns a promises enabling you to halt execution of the script until the presented item has been dismissed.
- Added the “response” property to Request. The property is populated with information about the response when the request have completed.
- Added the “onRedirect” property to Request. The property enables you to specify how redirects should be handled.
- Added the“availability” and “timeZone” properties to CalendarEvent.
- The Device bridge now has functions for retrieving the language the device is using.
- The Color bridge now expose its HEX color code and alpha.
- Data now has a getBytes() function to get the raw bytes.
- Improves logging of bridges. Their properties are now shown when logged and their names have been cleaned up.
- Native bridges now implement toString() and toJSON() and supports Object.keys() and Object.values().
- Fixed issue where running a script from a share sheet would fail if “Always run in app” was enabled and the shared items included at least one file.
- Fixed issue where Safari.openInApp() would not open Safari when the script is run from a share sheet.
- Fixed issue where some operations couldn’t be performed on files imported from a share sheet.
- Fixed issue where the calendar wasn’t correctly exposed on CalendarEvent.
- Fixed issue where QuickLook did not work with file URLs and website URLs.
- Fixed issue where the calendar wasn’t correctly exposed on a CalendarEvent.
- Fixed issue where Data.toString() didn't return the proper string. The method have also been renamed to Data.toRawString().
- Fixed issue where Request.addImageToMutipart() didn’t make the request a proper multipart request.
- Fixed issue where Safari.openInApp() would not open Safari when the script is run from a share sheet.
- Fixed issue where running a script from a share sheet would fail if “Always run in app” was enabled and the items in the share sheet included at least one file.

Thanks to all the great beta testers for helping me test this update. I really appreciate it!
1.0.2 2018-10-05
- New: Uses mail@scriptable.app for support.
- Bugfix: JavaScript files in subfolders of Scriptables iCloud folder is no longer included in the list of scripts.
- Bugfix: Fixed issue where the review prompt might might have been shown too often. Sorry.
- Bugfix: Fixed issue where the app would sometimes crash when saving a reminder.
1.0.1 2018-10-04
- New bridge: You can now access information about the device and its screen using the Device bridge. Using this bridge, you can determine if a script is running on a phone or a pad, adjust the brightness, check the battery level and much more.
- New bridge: You can now store credentials, keys etc. securely in an encrypted database using the new Keychain bridge.
- New: Shows a hint in the list of scripts explaining where to find example scripts to get new users started. Tap the “X” to permanently remove the hint.
- New: The editor is now more performant. Thanks to @brunophilipe for helping me out!
- New: Types built into JavaScript and types defined by Scriptable are now highlighted.
- New: Highlights the selected line in the line numbers.
- New: Uses mail@scriptable.app for support.
- Bugfix: JavaScript files in subfolders of Scriptables iCloud folder is no longer included in the list of scripts.
- Bugfix: Fixed issue where the review prompt might might have been shown too often. Sorry.
- Bugfix: Fixed example scripts that weren’t working, including the “Is Slack down?” example script.
- Bugfix: Fixed issue where scripts run in Siri did not respect the “Always run in app” setting.
- Bugfix: Fixed issue where scripts would not be correctly loaded when importing a script that uses Windows line breaks.
- Bugfix: Fixed issue where imported scripts would sometimes have their filename suffixed with a number.
- Bugfix: Fixed issue where the app could crash when saving a calendar event.
- Bugfix: Fixed issue where the log would be visible for a split second when dismissing the keyboard in the editor.
- Bugfix: Fixed issue where UITableCell wouldn’t respect alignment specified with centerAligned() and rightAligned().
- Bugfix: Fixed issue where the app would sometimes crash when selecting “Share JavaScript File”.
- Bugfix: Fixed issue where Request.addFileDataToMultipart(), Request.addFileToMultipart() and Request.addImageToMultipart() would ignore the supplied name.
- Bugfix: Fixed issue where the loading indicator wasn’t shown when opening the app to run a script because “Always run in app” is enabled.
- Bugfix: Fixed layout issues on new phones.
1.0 2018-09-18