Release Notes


Important Note:

Patches for versions 2.9 and above must be applied using ApplyPatch.ps1. If you have a version lower than 2.9.3, download this file, unblock it and place it in the same folder as Web.config.

To run the script, open a Powershell window with administrative rights. Go to the directory containing the script. Type .\ApplyPatch.ps1 and hit Enter. Follow any on-screen instructions.

If an error is encountered when attempting to login from the addin, paste dll files from the Addin folder in the full download into %localappdata%\SheetKraft. Be careful not to replace config files.

Versions 2.10 and beyond require the .NET Framework 4.7.2 for all components including the addin. To check if this is installed open a Powershell window and run the command (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 461808

Version 2.12.33

Released on 4 Oct 2019

  • The limit on text values in a single cell has been increased from 16 MB to 256 MB.
  • Added the ability to ExportSheets to specify which sheet should be the active sheet. When using ExportSheets to modify a previously created workbook, it is possible to specify the name of an already existing sheet in the previously created workbook even if it is not being exported from this formula.
  • ConfigEditor now supports testing of SMTP settings.
  • Fix in saving input values across a logout due to inactivity.
  • An output marked Calculate Immediately was not being updated when there was an input marked as a CheckboxList.
  • Unnecessary blank space on Activity Run page has been removed in the case where there is an output with multiple files that happens to produce no files.

Manual Download links (if script based download fails)

Version 2.12.31

Released on 16 Sep 2019

  • DataFromExcel now handles unicode escape sequences.
  • Added a refresh button to recalculate suggested inputs or immediate outputs manually. This can be useful if the user knows that some other data on which these values depend has changed.
  • If an auto-logout occurs due to lack of activity when the user is on the activity run page, inputs entered before the logout are restored after the user logs in again.
  • DataFromDatabase now supports Teradata.
  • Added a QueueActivity function that can start another activity after the current activity has completed. The activity can be configured to run always or only on success or only on failure of the current activity.
  • ConfigEditor now supports testing of FTP/SFTP settings.
  • When an activity fails to send emails due to incorrect configuration or incorrect credentials, the errors are now shown on the web UI. The status of the activity shows as Succeeded with warnings.
  • Fixed bug where DataFromEmail would fail on a draft email in msg format due to the lack of a SentOn field. Now it gives a #N/A value.
  • Fixed bug in ExportToExcel, ExportToText, ExportToDbf where there could be a spurious circular reference error if there were any calculations to the right of the cell containing the Export formula.
  • Fixed a rare crash in ActivityRunner when evaluating activities with suggested inputs or immediate outputs.

Manual Download links (if script based download fails)

Version 2.12.30

Released on 28 Aug 2019

  • ExportSheets now supports generating password protected (encrypted) workbooks. This is in addition to the UI only sheet-level password protection. This support will be added to ExportToExcel too in a future release.
  • ExportSheets now handles Print_Titles properly without showing a rename prompt on opening exported file.
  • The default file name validation rule is slightly relaxed to allow dot and plus characters in the file name.
  • File extension validation now treats doc and docx as the same type of file. Similarly ppt and pptx are treated as the same type of file.
  • File inputs of an activity are refreshed and validated at the time of publishing to ensure that download sample file and validation of file extensions works correctly.
  • File extension validation is skipped if there is no sample file. This will not affect any newly created or existing properly published activities.
  • Bug fix in ExportSheets when exporting Excel Pivot Tables where a SheetKraft PivotTable formula would sometimes get exported.
  • Bug fix where the email checker in ActivityRunner would not properly restart after an activity with an email trigger was published.
  • Fixed bug where a blank cell in SendEmail template would show up as zero in the email.

Manual Download links (if script based download fails)

Version 2.12.29

Released on 20 Aug 2019

  • Support for extracting text body and html body of email into separate file.
  • DataFromDatabase with SQL query or stored procedure now supports selection and rearrangement of columns. As of now, this is only available by providing a TRUE value for the new argument enforceReportRange directly in the formula. UI support will be added later. All newly generated formulas will set this argument to TRUE. However, in existing formulas, this argument will default to FALSE for backward compatibility. If the query does not return any of the specified columns, an error will be reported.
  • DateValueEx.SK now supports full month names using a mmmm specifier in the format.
  • ExportSheets now has significantly improved support for charts, chart sheets and pivot tables. The make chart dynamic and make pivot dynamic functionality now generates sheet scoped names instead of workbook scoped names to bind the data. This makes it possible to use ExportSheets with a defined function to add sheets containing charts and pivots.
  • Improvements to scrolling in ExportToText and ExportToExcel UI when the number of columns is large.
  • ConfigEditor now supports editing and testing of EWS (Exchange) and IMAP connections.
  • Fix in reporting status code in ExtractZip.
  • Fix to the retry frequency for IMAP connections. Earlier retry attemts were far too frequent.
  • Fixed bug in displaying activity run input with a value of 0.

Manual Download links (if script based download fails)

Version 2.12.28

Released on 7 Aug 2019

  • Enhanced database pickers to support searching by prefix in each word instead of only at the beginning.
  • Fixed bug where DataFromExcel would fail to load password protected xlsx files generated from older versions of Excel using binary encryption.
  • Added a config setting called DisableInputFiles. Setting this to true disables the download of input files from the activity run page. This is intended to mitigate a security concern with downloading potential malicious files uploaded by an attacker. It defaults to false and it is not recommended to enable this because a similar attack can be carried out in many other ways and the trade-off to disable file download to gain a slight improvement in security is unlikely to be worthwhile.
  • If a #REF! is encountered in the ignored branch of an IF formula, it used to be ignored. It will now always be reported as an error.
  • Fixed a bug in loading the GetAllFiles UI with a RelativePath input.
  • Fixed a bug where the GetCurrentUser function would not work with a PostgreSQL backend.
  • Upgraded version of lodash and some other dependent libraries to avoid reported vulnerabilities.
  • Tweaked the default value of AllowedFileNameRegex setting introduced in the previous release to allow file names with spaces.

Manual Download links (if script based download fails)

Version 2.12.27

Released on 29 Jul 2019

  • ActivityRunner now automatically picks up changes to activities with email triggers so that there is no need to restart it manually.
  • The footer feature in ExportSheets has been enhanced so that formulas in the footers or in other cells that refer to the footers are exported as expected in all cases of interest.
  • File upload buttons now show the type of file expected and the upload validates that the file uploaded has an appropriate extension.
  • Some security policy restrictions have been put in place on filenames of uploaded files and on all inputs generally to reject potentially malicious inputs.
  • Fixed a backward compatibility issue where activities published using a very old version of SheetKraft before pickers were introduced would not load correctly.

Manual Download links (if script based download fails)

Version 2.12.26

Released on 18 Jul 2019

  • Any errors, warnings within a call to a defined function are now reported as is in the calling workbook. Earlier, only one error / warning used to be reported for each unique status code regardless of other distinguishing parameters.
  • TableToHtml.SK now produces a default border on the table cells. In future releases, it will be possible to control the border by formatting the cells in Excel.
  • Added progress indicator during download of activity run log entries from web UI.
  • File upload for running an activity via API now requires the API name (currently schema.name) and input name as parameters instead of the input id which changes every time the activity is published.
  • Fixed bugs in IMAP email checker that might have resulted in the ActivityRunner service getting stuck in a stopping state.
  • Fix to DataFromText when one or more of the columns were not found in the source. This bug was introduced in the previous release.

Manual Download links (if script based download fails)

Version 2.12.25

Released on 15 Jul 2019

  • Support for downloading log entries displayed on web UI into Excel file.
  • DataFromText and DataFromExcel now show error messages for each mismatched column in each file. Earlier some errors used to get collapsed into a single error.
  • DataFromText now supports reporting filename, filepath and row values. This can be useful when importing from multiple files.
  • DataFromExcel now supports reporting filename, filepath, sheetname and row values. This can be useful when importing from multiple files or multiple sheets.
  • DataFromText and DataFromExcel now supports indicating that certain columns are optional. Warnings or errors are not shown for such columns if they are not found
  • The UI for DataFromText and DataFromExcel has been overhauled. The preview is now separated from the column specifications.
  • DataFromExcel now supports flattening of multiple columns matching a single column specification into rows.
  • DataFromText and DataFromExcel now exclude column headers by default. This makes these formulas consistent with other formulas which only return data. It is still possible to include headers.
  • DataFromExcel UI now supports sheet specification from a formula or a range.
  • DataFromExcel now supports XML Spreadsheet 2003 format.
  • ExportSheets and ExportToExcel now show warnings when text in a cell is larger than Excel's limit.
  • Fix to DataFromExcel to clear password from memory after an encrypted file is read.
  • Support for retrying storing of log entries and activity outputs in database. This should improve robustness to intermittent connectivity errors.
  • Fix to showing spinners on file downloads from activity run page on web UI.
  • Fix to validation of errors when default value for optional inputs is invalid.
  • Fix to crash in DateValueEx.SK when format contains a back-slash.
  • Fix to ExportToExcel template feature which was ignoring password protection.

Manual Download links (if script based download fails)

Version 2.12.24

Released on 5 Jul 2019

  • Fixed a bug affecting ExportToXml, ExportToWord and SendEmail using xhtml based template when a repeat tag receives a #NULL! range. This bug was introduced in 2.12.20

Manual Download links (if script based download fails)

Version 2.12.23

Released on 3 Jul 2019

  • ActivityRunner will now reliably restart (if configured) after a crash.
  • Added support for sending log events for crashes via email. This requires some changes to SheetKraft.log4net.config file.
  • The log files now support logging SheetKraft version (addin, web, and runner). To achieve this, add %property{SheetKraftVersion} to the value of conversionPattern in the SheetKraft.log4net.config file.
  • Enhanced ApplyPatch scripts to support multiple Activity Runners as well as Activity Runners on a machine without the website.
  • Exposed SvgIcon to website plugin.
  • Fixed a potential race condition in stopping IMAP email listener. This might have prevented Activity Runner from stopping in a timely manner.
  • Fixed issue in ExportSheets when exported values contained strings longer than Excel's limit. These strings are now truncated.

Manual Download links (if script based download fails)

Version 2.12.22

Released on 27 Jun 2019

  • Fix to ExportToHtml when template does not contain any static fields to be replaced.
  • Fix to installation patch which did not add a necessary bindingRedirect for System.Text.Encoding.CodePages.dll.
  • ExportToWord.SK now allows custom formulas in Report.
  • ExportSheets.SK now retains the hidden status of columns during export.
  • The deprecated xhtml template UI in SendEmail can be used with a checkbox. It was hidden entirely in 2.12.20.

Manual Download links (if script based download fails)

Version 2.12.21

Released on 26 Jun 2019

  • Fix to ExportToDatabase targetting PostgreSQL when all columns being exported are key columns.
  • Fix to DataFromHtml, DataFromXml and DataFromJson when input is provided directly from a cell instead of a path and the length of the input is greater than Excel's limit.
  • Fix to layout on Manage Users in Role page.
  • Fix to layout of the main app bar in the web UI when using a client specific logo.

Manual Download links (if script based download fails)

Version 2.12.20

Released on 19 Jun 2019

  • Added ExportToHtml.SK function. This is similar to the previous Email Template functionality but uses a html template instead of an xhtml template for easier usage. This means that valid html that is not valid xhtml will no longer be rejected. Also, changes to the order in which tags appear in the template will work without the need for any other changes. UI support will be added in a future release.
  • Added TableToHtml.SK function. This takes a range and generates an html table from it. Currently, there is no support for borders or background colors. This support will be added in a future release.
  • Added MarkdownToHtml.SK function. This function supports generation of html from template text in Markdown format (as per CommonMark specification). It supports substituting either text or raw html into the template. Basic UI support is also available.
  • SendEmail.SK now supports html bodies generated using one of the functions above or from an html file. The older xhtml template functionality is deprecated and the UI no longer supports creation of formulas with xhtml template. Editing existing formulas that use this will still work.
  • DataFromText.SK now supports importing the contents of an entire file into a single cell. Also, line endings in the text are now normalized during import so that the text values imported will always use a LF character for line ending. Also, the UI for importing a text file as a simple sequence of lines without any delimiter or unescaping of quote characters is more direct.
  • ExportToText.SK now supports exporting values without any escaping of characters. It also provides control over the line-endings in the generated file.
  • Many formulas that use full column or full row references will now evaluate faster. While it is still not recommended to use such formulas, some use cases require them.
  • Added a ConfigEditor.exe application. This will ease the editing of config files in the addin as well as on the server. It also supports encryption and decryption of config sections.
  • Supported publishing an activity even if running it results in an error. While this should be avoided in general, there are scenarios where errors are unavoidable when running from the addin.
  • Fixed a bug where SheetNames.SK would report an error if the workbook contained hidden sheets.
  • Added upto 5 retries when ActivityRunner tries to download the activity file for a newly published activity. This should improve the robustness of the ActivityRunner in the face of problems in database connectivity.
  • Fix to a bug in the web UI for inputs with Workbook pickers. These inputs would show up as "Not yet supported" until the picker values were received.
  • Fixed bug where buttons for linked activities would be displayed even before the activity run completed.

Manual Download links (if script based download fails)

Version 2.12.19

Released on 11 Jun 2019

  • Added options to ExportSheets to support conversion of cells with #N/A and empty string to blank.
  • Fixed handling of colors in ExportSheets. Usage of theme colors should now work correctly.
  • Added logging to record time taken for database queries (including DataFromDatabase, ExportToDatabase and DeleteRowsFromTable)
  • Fixed the validation for activity inputs of type Condition. Empty conditions and empty string as the value are now allowed.
  • Fixed crash in DataFromExcel UI in Excel 2010. This would occur on opening the UI on a new workbook.
  • Fixed running activities via API with a PostgreSQL backend.

Manual Download links (if script based download fails)

Version 2.12.18

Released on 27 May 2019

  • HttpRequest.SK now supports query parameters for HTTP methods like POST that have a request body.
  • The URLEncode.SK function now supports taking parameter names and parameter values in separate arguments. This function is used by the HttpRequest UI to generate a formula with query parameters.
  • Lots of improvements to handling of edge cases in the HttpRequest.SK and URLEncode.SK functions. #N/A, #NULL! and blank cells are treated as empty text. Numbers and boolean values are coerced to text. RegionDown.SK returning #NULL! when used as arguments to these functions is now handled properly.
  • The httpSessions.config now supports a large number of additional configuration parameters. These can be used to control proxy settings at a session level, support Windows authentication, customize the timeout, control buffer sizes, etc. Basically all the properties of the HttpClient and HttpClientHandler classes are exposed as configuration parameters.
  • The HttpRequest UI in the addin has been improved significantly. It now allows selection of session name from pre-configured sessions in httpSessions.config, adding an entry to httpSessions.config, extracting query parameters from the url, pasting request body and headers from the Network tab in Chrome developer tools, and various other usability improvements.
  • Fixed issue where the response message received in HttpRequest.SK was not getting disposed leading to an eventual hang when thousands of requests were made in the same session.
  • Fixed a crash in ExportToExcel with the template feature when partition by was set as empty.

Manual Download links (if script based download fails)

Version 2.12.17

Released on 20 May 2019

  • DataFromDatabase UI now has a provision to specify a cell containing a SQL query instead of requiring entry of the query in the window itself.
  • DataFromDatabase UI now supports cancelling a long running query.
  • Column selection in DataFromDatabase UI is now carried over properly to the Filter / Sort UI.
  • DataFromDatabase UI no longer shows the Filter/Sort or Max Rows options for stored procedure where they are not supported.
  • The writing of headers in DataFromDatabase UI when Filter / Sort is selected now happens at the end of the Filter / Sort UI. In the first step only column names are written.
  • Any function UI that previously took a long time to write out specification ranges / headers in large workbooks should now be quicker.
  • Database Explorer, ExportToDatabase and all database related UIs now show a status window while possibly long operations are in progress.
  • Column type inference in Database Explorer now ignores cells containing empty text and treats them similar to blank cells.
  • Database Explorer now properly ignores Default specification if Nullable is checked when generating SQL for creating a table.
  • ExportToDatabase now allows empty text for non-text columns. Empty text is considered equivalent to NULL.
  • The addin now checks if the required .NET Framework version is not installed.
  • Some text wrapping fixes to Database Explorer and ExportToDatabase UIs.
  • Fixes to error messages in DataFromText to avoid showing full paths on web UI.
  • Fix to a crash in ExportToExcel UI with the template feature.
  • Web UI pages for roles, users and rights now show a permission denied error messages instead of showing empty lists.

Manual Download links (if script based download fails)

Version 2.12.16

Released on 15 May 2019

  • Fixed an issue where HttpRequest.SK might not have responded immediately to a Cancellation of activity run.
  • Allowed specifying a custom timeout for HttpRequest.SK at a session level. This can be configured in the httpSessions.config file by adding something like Timeout=180 for the value corresponding to the session name. The Timeout is specified in seconds and the default value is 100 seconds when not explicitly configured. The full configuration line might look like <add key="session_name" value="AllowAutoRedirect=true;Timeout=180" />

Manual Download links (if script based download fails)

Version 2.12.15

Released on 9 May 2019

  • Support for running linked activity from a failed run.
  • Fix to bug in running linked activities when the linkage involved a single file output linked to a file input.

Manual Download links (if script based download fails)

Version 2.12.14

Released on 6 May 2019

  • Support for storing BCC fields in emails saved as drafts in eml format.
  • Added functions Base64Encode.SK and Base64Decode.SK. Both functions can operate on a single value or an array of values.
  • When attempting to save a database connection from Database Connection String Editor, a connections.config file will now be created if it did not already exist.
  • Improvement to handling of errors on roles and rights page if the url in the browser is modified manually.
  • Fix to error messages from DataFromExcel revealing the full path on the web UI.

Manual Download links (if script based download fails)

Version 2.12.13

Released on 25 Apr 2019

  • Validation messages are now shown on the public run page. Earlier only Succeeded or Failed was being shown.
  • Fixed a crash in ExportToExcel when using the template feature.
  • Fixed bug in the email trigger feature where manually changing the LastReceivedTime in the sk.EmailCheckRecords table would not have the desired effect if there was more than one activity targetting the same mailbox.

Manual Download links (if script based download fails)

Version 2.12.12

Released on 24 Apr 2019

  • Added a MaxSize attribute for activity inputs. This can be used to restrict the size of inputs (text and file inputs) that can be entered or uploaded. It is recommended to use this for any public activities. The MaxSize can be specified as a number or in KB or MB, for example 25 MB.
  • Added support for reporting aggregate values in the header or footer when exporting as a table from ExportToExcel. This also works with the partition feature.
  • The order in which sheets are added when using the partition feature in ExportToExcel is now stable and matches the order in which the partition values are encountered. Also, some unnecessary copying of data has been eliminated.
  • Removed the "Run Activity -" and "Run Checklist -" prefix on the activity and checklist pages. Note that it is possible to customize this title as well as the text on the "Start" button by providing appropriate json when publishing the activity from the addin.
  • Added a sk.ManageUserPasswords right. This controls whether a user can reset the passwords for any local users. Earlier this was being controlled by the sk.ManageUsers right. To create this right on existing installations, the command ActivityRunner --forceUpgrade must be run after the patch is applied. Alternatively, the patch could be applied twice as this will have the same effect.
  • The security matrix page now has an additional section for role wise rights.
  • The rights granted to a particular role can now be seen on the Manage Role page.
  • Improvements to width calculation of checkbox list inputs and outputs marked as calculate immediately.
  • Changes to some SQL queries used for various pages to improve performance when the number of runs is very large. Note that this will have the intended benefit only after some indices are created on the sk.ActivityRuns table. These indices will be created in a future release automatically. Anyone facing slow loading of pages can create the necessary indices manually.
  • Fix to workaround for long array formulas in a very rare case.

Manual Download links (if script based download fails)

Version 2.12.11

Released on 17 Apr 2019

  • Support for configuring password expiry for users not linked to Active Directory. Add <add key="PasswordExpiry" value="90"/> to the appSettings section in Web.config to force users to change their password after 90 days.
  • Support for running activities without requiring users to log in. To enable this, create a role called sk.Anonymous. Create a user and associate it with this role. Then grant rights to run the activities to this role. The public url to run an activity is public/activities/run/id where id is the id of the activity.
  • Activities with inputs of type Multiple Files can now be run without providing any files if Blank is checked in the input definition.
  • The SQL queries for the Purge Activity Runs page are now run without a timeout. This should prevent timeout errors on large databases.
  • Fix to running activities via API where input values were being ignored leading to validation errors. This was a bug introduced in 2.12.1
  • Fix to a rare data dependent crash in generating Excel files from ExportToExcel and ExportSheets. This involved a fix to the EpPlus library used for export.
  • Improvement to logging error messages in case of a crash. In some cases, the error messages were not being logged.

Manual Download links (if script based download fails)

Version 2.12.10

Released on 10 Apr 2019

  • Table input columns now resize automatically after loading suggested values for the first time.
  • Fix to error processing email triggers when there is more than one trigger with a PostgreSQL backend.

Manual Download links (if script based download fails)

Version 2.12.9

Released on 8 Apr 2019

  • Support for showing a download button within FileId Display columns in table inputs.

Manual Download links (if script based download fails)

Version 2.12.8

Released on 3 Apr 2019

  • Fix to RunCommand.SK when the output of the command contained a blank line.
  • Fix to StoreFile.SK, LoadFile.SK, DataFromEmail.SK to propagate errors in their inputs properly.
  • Fix to functions like SelectRows returning #VALUE! in the extremely rare case when the input range is a single cell with an error value.

Manual Download links (if script based download fails)

Version 2.12.7

Released on 27 Mar 2019

  • Support for configuration of sessions for HttpRequest. This works via the newly introduced httpSessions.config file. Applying the patch will generate a sample file in the Runner folder. The file should have entries of the form <add key="session_name" value="AllowAutoRedirect=true;ClientCertStoreLocation=LocalMachine;ClientCertStoreName=My;ClientCertFindType=FindBySubjectName;ClientCertFindValue=" />.
    session_name should match the value passed to HttpStart.SK.
    AllowAutoRedirect can be set to false if automatic redirects should be prevented.
    ClientCert* properties can be set to appropriate values to send client certificates along with the request. The values shown in the sample should work for most common cases.
    The valid values for ClientCertStoreLocation are CurrentUser and LocalMachine.
    The valid values for ClientCertStoreName are My, AddressBook, AuthRoot, CertificateAuthority, Disallowed, Root, TrustedPeople, TrustedPublisher.
    The valid values for ClientCertFindType are FindByThumbprint, FindBySubjectName, FindBySubjectDistinguishedName, FindByIssuerName, FindByIssuerDistinguishedName, FindBySerialNumber, FindByTimeValid, FindByTimeNotYetValid, FindByTimeExpired, FindByTemplateName, FindByApplicationPolicy, FindByCertificatePolicy, FindByExtension, FindByKeyUsage, FindBySubjectKeyIdentifier.
    The value for ClientCertFindValue depends on the value chosen for ClientCertFindType.
    To apply this configuration in the addin, the same config file should be placed in the addin folder.
  • Added support for posting multipart/form-data and file or text contents with HttpRequest.
  • New UI in addin for HttpRequest. This is the first cut and will be improved further in future releases. Note that opening existing formulas with this UI and pressing OK may lead to formulas in header values or post values being overwritten. Use with caution.
  • Changed order of versions shown on Activity versions page from ascending to descending. Also improved sizing of the grid.
  • Fixed bug where a group name with a slash in it led to a failure in loading rights page.
  • Fixed bug where Display inputs would not refresh on clicking Run Again.

Manual Download links (if script based download fails)

Version 2.12.5

Released on 22 Mar 2019

  • Transactions for connections other than the SheetKraft connection are now created with an isolation level of Read Committed instead of Repeatable Read. In the common use case of not exporting to external databases, this avoids the need for a distributed transaction. In a future version, we will support greater control over this.
  • Fix to margins for file outputs. The UI was looking cluttered due to a lack of margins.
  • Fix to broken / incorrect downloads of file outputs if a multiple files output had some invalid files.

Manual Download links (if script based download fails)

Version 2.12.4

Released on 19 Mar 2019

  • Support for long text values in Display inputs of type text. The value is now shown pre-formatted (with a pre html tag) in the web UI. Hence any new-lines in the text are preserved in the display.
  • Support for Display inputs of type FileId in the web UI. A download button is now properly displayed for this case.
  • Fix to validation of inputs with AllowDefaultValue set in versions older than 2.12. This was a bug introduced in the 2.12.1 release.
  • Fix to VLookup.SK when the match condition contained a cell reference external to both key table and lookup table in the same sheet as the formula but intersecting the lookup table range except for sheetname.

Manual Download links (if script based download fails)

Version 2.12.3

Released on 13 Mar 2019

  • Added function ComputeHash.SK. This function can compute SHA1, SHA256, SHA384, SHA512 and MD5 hashes. This is useful along with HttpRequest.
  • Added support for conditional formatting of multiple template cells with the same condition to ExportToExcel with template.
  • Fixed the addin version of EOPeriod.SK to propagate error values as input. The behaviour for the calculation engine version was already correct.
  • Fix to capture of formulas for optional and suggested inputs when the formulas did not depend on other inputs.
  • Fix to validation of Single Cell FilePath inputs to activities on the web UI. This was a bug introduced in the 2.12.1 release.

Manual Download links (if script based download fails)

Version 2.12.1

Released on 11 Mar 2019

  • Support for specifying a condition (with SQL like syntax) as an input to an activity. A UI is available on the web interface to construct the condition so that the user does not need to know the syntax. A picker definition is required in the new sk.PickerDefinitions table for this to work. However, this release does not contain a UI to create the definition.
  • Support for Optional, Suggested and Display inputs. The values for these inputs can be sourced from formulas / values in the setup workbook and can depend on other inputs. Please see Defining an Activity for more information.
  • Support for blank values for activity inputs. If allowed, Blank values map to empty string or #N/A. Please see the article linked above for more information.
  • Temporarily disabled the periodic check for notifications until performance can be improved on the server side.

Known Limitations

  • The new features introduced for activity inputs do not work for checklists. This will be improved in future releases.

Manual Download links (if script based download fails)

Version 2.11.18

Released on 6 Mar 2019

  • Improvement to ExportToExcel with template when underlying data has no rows.
  • Improvement to DataFromHtml which now returns a full row of error values instead of a single error value in case of errors. This improves the flow of errors in dependent formulas.

Manual Download links (if script based download fails)

Version 2.11.17

Released on 26 Feb 2019

  • ExportToExcel with template now supports setting the height of rows.
  • ExportToExcel and ExportSheets now preserve the text rotation (if any) applied on the exported cells.
  • Improved the consistency of formatting of dates and numbers to text.
  • Fix to Immediately calculated outputs functionality when the immediately calculated output depends on an input file.

Manual Download links (if script based download fails)

Version 2.11.16

Released on 11 Feb 2019

  • Added support to group notifications when there are multiple notifications from the same activity.
  • Notifications for activities allowing simultaneous runs are now shown only to the user who ran the activity.
  • Raised limit on string length in a single cell when using DataFromHtml. Now supports strings upto 16 MB instead of Excel's limit of 64 KB.
  • Fixed bug where large post content to HttpRequest.SK was causing a failure.
  • Fixed bug in ExportToExcel with template where border was not being applied correctly.
  • Fixed bug in ExportSheets when retaining formulas produced by a FillDown.SK that evaluates to #NULL!.
  • Fix to saving PostgreSQL connection string from the connection string editing UI in the addin.

Manual Download links (if script based download fails)

Version 2.11.15

Released on 31 Jan 2019

  • ExportSheets UI now generates empty string instead of blanks in Renamed To column. This makes the calculation graph easier to resolve.
  • Fix to graph resolution issue with ExportSheets introduced in 2.11.14.

Manual Download links (if script based download fails)

Version 2.11.14

Released on 30 Jan 2019

  • Set SecurityProtocol for https requests to support Tls1.1 and Tls1.2 explicitly.
  • Fix to focus issues on run activity page when there are multiple table inputs.
  • Table inputs grid now retains focus on the cell being edited after clicking Enter / Escape or accepting an entry from a picker drop down.
  • Table input columns now resize automatically to accommodate newly entered value. The width of the entire grid also updates on changes to column width.
  • Table input grid now does not take up unnecessary vertical space.
  • Fix to activity linkage with file outputs linked to file inputs.
  • Fix to issue where ExportSheets would occasionally ignore format functions.
  • Set name field in Content-Type header of attachments of generated emails to the name of the file. This should have no effect since it is only used as a fallback if the filename field in Content-Disposition is not valid.
  • Fixed issue where number format with red color for negative numbers and thousands separators was not being applied.
  • 'Download all output files' button on activity run page is now only shown if there are multiple file inputs.
  • Fix to footer placement in ExportSheets when some sheets were conditionally not exported.
  • Re-enabled SpecifiedPickupDirectory in smtp.config. This is only useful for testing purposes.

Manual Download links (if script based download fails)

Version 2.11.13

Released on 23 Jan 2019

  • The table inputs grid on web UI is sized to avoid excess whitespace.
  • Minor improvements to cell selection rectangle and picker drop downs in table inputs.
  • Fixed issue where a failure in connecting to IMAP would lead to service getting stuck in a stopping state.
  • Fixed issue where file downloads on PostgreSQL backend would occasionally fail.

Manual Download links (if script based download fails)

Version 2.11.12

Released on 14 Jan 2019

  • Support for preventing activity runner from picking up activities in specific schemas. This complements the allowedSchemas setting added in a previous version. Add <add key="disallowedSchemas" value=""/> to the <appSettings> section in ActivityRunner.exe.config. If this setting is absent or value is blank, the runner can pick activities from all schemas. If value is specified as a comma separated list of schema names, activities from the specified schemas will not be picked up by the runner.
  • ExportSheets now generates the output file at the point of call and not at the end of the run. This eliminates the need for workarounds when the generated file needs to be provided as an input to some other formula in the same activity.
  • ExportSheets now retains the explicitly set formats of cells with array formulas. Earlier, these formats would get lost, and would need to be applied using FormatCellContents and FormatBorders functions. This is now no longer necessary in cases where the size of the range does not change.
  • ExportSheets and ExportToExcel now delete temporary files produced during the export as soon as they are no longer needed. Some unnecessary file copying has also been eliminated. This will provide a considerable speedup in activities that produce a large number of excel files.
  • Fix to reload checkbox list even if there is no output marked calculate immediately.

Manual Download links (if script based download fails)

Version 2.11.11

Released on 8 Jan 2019

  • Added MergeCellsInRow.SK function similar to the existing MergeCellsInColumn.SK function.
  • Database Explorer reports an error when inferring table structure if column contains mixed values.
  • Fix to race condition when multiple activity runners attempt to pick up the same activity.
  • Added specific status codes for VALUE, ROUND, ROUNDUP and ROUNDDOWN functions when their inputs cannot be converted to a number.
  • Fix to anchor calculation and values of template cells in ExportToExcel with template.

Manual Download links (if script based download fails)

Version 2.11.10

Released on 3 Jan 2019

  • Database Explorer now supports generating SQL for creating tables to store files in PostgreSQL. Earlier this was only working for SQL Server.
  • Fix to crash when using Calculate Immediately functionality when there were regular ouputs (not immediate) in a sheet that did not contain immediate outputs.
  • Fix to Calculate Immediately functionality where it would show incorrect results for the immediate outputs before running the activity.
  • StartActivity now returns a pending value if the first argument (name) is pending. Earlier it used to ignore this argument completely. This now makes it possible to use this argument for forcing dependencies.
  • Fix to Activity Runner where it used to enter a stopping mode if the query to fetch queued runs deadlocked. This would only happen if there was more than one activity runner.

Manual Download links (if script based download fails)

Version 2.11.9

Released on 28 Dec 2018

  • Support for limiting activity runner to specific schemas. Add <add key="allowedSchemas" value=""/> to the <appSettings> section in ActivityRunner.exe.config. If this setting is absent or value is blank, the runner can pick activities from all schemas. If value is specified as a comma separated list of schema names, only activities from the specified schemas are picked up by the runner.
  • Added logging of wakeup message sent to Activity Runners for better diagnostics.
  • Fix to picker drop down in table inputs being rendered behind the grid instead of front of it.
  • Fix to missing validation on license update page.

Manual Download links (if script based download fails)

Version 2.11.8

Released on 19 Dec 2018

  • Added ability to update the server license from the website. This is only available to admin users.
  • Experimental support for installing Activity Runner on user's desktops.
  • DataFromText now supports carriage return (CR) as line endings in addition to Line Feed (LF) and CR+LF.
  • DataFromText infers data type as text if values contain text as well as dates or numbers.
  • Fix to Json validation for email triggers on activities while publishing.
  • Fix to #NAME? errors not getting reported if they occurred in a branch of IF that is not evaluated. However these errors would still result in a failure.
  • Fix to conditional formatting feature in ExportToExcel with template without partitioning.
  • Fix to implementation of EOPeriod.SK which used to return incorrect year in some cases.
  • Fix to evaluating cross-sheet reference in filter with nested data sources in ExportToExcel with template.
  • Fixed crash in loading Formula Table when there is a defined function and the workbook has not been run.

Manual Download links (if script based download fails)

Version 2.11.7

Released on 30 Nov 2018

  • Added support for Checkbox list with custom query in web UI. When inputs are changed, the list is now reloaded.

Manual Download links (if script based download fails)

Version 2.11.6

Released on 28 Nov 2018

  • Added support for FTP (with ssl support) protocol to Ftp functions. Earlier, these functions only supported sftp protocol. The ftpConnections.config file should have an entry of the form <add key="connection_name" value="protocol=ftp;host=servername.com;username=username;password=password;ssl=None" />. For anonymous connections, username and password can be left out. If port is other than the default port it must be specified. ssl can be None, Implicit, or Explicit. Implicit FTP is not very common. When using ssl, if the server certificate is not trusted, fingerprint can be provided.
  • Ignored redundant semi-colons when parsing email and ftp configuration files.

Manual Download links (if script based download fails)

Version 2.11.5

Released on 27 Nov 2018

  • Improved single level checkbox list on the web UI. Items that are checked but filtered out because of the search text are considered to be selected and the number of items selected is also shown.
  • Improved the 2 level checkbox list on the web UI by adding a select-all button and an indicator for the number of items selected.
  • Any clicks on the web ui are now considered as user activity reset the inactivity timeout. Earlier only requests sent to the server were being treated as user activity.
  • DataFromExcel now accepts xls files with xlsx extension and vice-versa.
  • Fix to HttpRequest.SK which was skipping parameters with empty values.
  • Fix to slow loading of checklist run history page.
  • Fix to DataFromExcel with RegionAcross.SK. Earlier, the RegionAcross calculation was not treating formatted blank cells as blank.

Manual Download links (if script based download fails)

Version 2.11.4

Released on 21 Nov 2018

  • Support for naming urls on login window in the Excel addin. This makes it easy to identify the urls for different environments. To provide a name for an existing url, enter the url in the form name (url). name can contain spaces if desired.
  • For PostgreSQL, Database Explorer infers column names in lower case to make it easier to write queries without having to quote the column names.
  • Added a button on password fields in the web UI to show the password. This will make it easy to verify that the correct password has been typed.
  • Fixes to conditional formatting feature introduced in the previous release and better reporting of status codes in ExportToExcel.
  • Fix to WaitForActivity.SK always returning an error.

Version 2.11.3

Released on 20 Nov 2018

  • Support for conditional format on cells in ExportToExcel.SK using a template.

Version 2.11.2

Released on 15 Nov 2018

  • Fix to stream getting closed too soon when reading attachment from DataFromEmail.SK. There was one case where this was still not fixed in 2.10.9
  • Under heavy load, setting activity status in the database was deadlocking leading to a crash in the Activity Runner. Attempted retrying this operation upto 10 times.

Version 2.11.1

Released on 14 Nov 2018

  • Support for listening for incoming emails using IMAP protocol. This uses the IMAP IDLE extension for real-time triggers if it the extension is supported by the server. Else the server is polled for new messages at a configurable interval (default 20s). Configuration entry in emailConnections.config should be similar to <add key="connection_name" value="type=IMAP;email=email_address;password=password;interval=20;url=imaps://imap.whatever.com:993" />.

Version 2.10.10

Released on 13 Nov 2018

  • Some improvements and fixes to ExportToExcel using a template. Note that this functionality is still under development and not fully mature.

Manual Download links (if script based download fails)

Version 2.10.9

Released on 2 Nov 2018

  • Fix to stream getting closed too soon when reading attachment from DataFromEmail.SK.
  • Fix to database picker on scrolling down. New values were not getting loaded.
  • Fix to display of table outputs where output range has no values.

Manual Download links (if script based download fails)

Version 2.10.8

Released on 1 Nov 2018

  • Fix to SFTP functions when a non-standard port is in use.
  • Fix to crash in FtpListDirectory when field names to be reported are missing.
  • Fix to incorrect validation of first argument to CommandLine.SK.
  • Fix to ExportSheets where the formula was getting incorrectly generated when FooterRows/Columns functionality was used.
  • Fix to database picker where custom queries were not being correctly run under some cases.

Version 2.10.7

Released on 30 Oct 2018

  • Support for array argument (produced by a function call) to EmailAttachments.SK inside SendEmail.SK. Previously only range argument was supported.
  • Support for custom query in database picker along with the ability to reference other activity inputs in the custom query. The Define Activity screen now has a field where each input (or column in a table input) can be assigned a SQL name (must be unique). The database picker can be assigned a custom query. The default query is shown and this can be edited. The query must be in a specific syntax. This will be covered in a blog post.
  • Added functions TextToTable.SK and TableToText.SK. These functions make it possible to take a table of columnar data and store it in a single cell value and vice versa.
  • Added function CommandLine.SK. This makes it easy to construct a command line for use with RunCommand. It takes care of properly applying double quotes and putting spaces between arguments. Further, if the program path to CommandLine.SK starts with 'Tools', it is resolved w.r.t %localappdata%\SheetKraft in the addin and w.r.t the installation folder on the server. This makes it possible to store commonly used programs and scripts in a global location and refer to them without having to package them with the activity. It is recommended to create a sub-directory inside the Tools directory for each such program.
  • Added function TempPath.SK. This is intended to be used with RunCommand.SK. If the program being run produces a file, the file path should be obtained with TempPath.SK and passed to the program. This ensures that SheetKraft can properly isolate the outputs of the program across multiple and parallel runs. This is appropriate if the file produced by the program is going to become an activity output or is going to be processed further.
  • Added function ResolveFilePath.SK. This is intended to be used with RunCommand.SK. For files that are produced by some other SheetKraft function or are inputs and must be read by the program being run, ResolveFilePath.SK should be called with a mode of "read" and the result path should be passed to the program. For files that will be produced by the program in a static folder, ResolveFilePath.SK should be called on the static path with a mode of "write" and the result path should be passed to the program.
  • If the command line to RunCommand.SK has a file path as its first part, the folder containing that file becomes the current directory for the new process in which the command is run. This means that when RunCommand.SK is used to run programs, the programs will run with their containing directory as the current directory.
  • When 'Prevent Simultaneous Runs' is unchecked for an activity (indicating that runs of the activity are independent of each other), View All Runs will only show runs by the user currently logged in instead of all runs. This prevents users from seeing runs by other users. In a future release, the ability to view runs by other users may be added back with better control.
  • Added a check to prevent publishing of activities whose main workbooks are not in .xlsx format. This is only intended to cover an audit requirement.
  • Fix to some access check SQL queries for PostgreSQL.
  • Fix to missing scrollbar in wide grids in the latest version of Google Chrome.
  • Fix to state of checkboxes in 2 level checkbox list on web UI.
  • Fix to RelativePath showing unnecessary ..\ in some cases. This was occurring when the addin installation folder was manually created with a non-standard casing (for ex. Sheetkraft instead of SheetKraft)

Version 2.10.6

Released on 25 Oct 2018

  • Improved parsing of email addresses for SendEmail. This should now handle cases like comma separated addresses more robustly.
  • Ignored the username and password provided in smtp configuration if email server does not support authentication. This case was raising an error in the previous release.
  • Modified the implementation of ExportToDatabase for PostgreSQL slightly to significantly improve performance of BatchReplace mode.
  • When publishing an activity to a server that does not contain some of its previous versions, the change description concatenation is now in reverse-chronological order.
  • Prevented a checklist from being started if one of the activities in the checklist is already running.
  • Fixed crash in DataFromXml if more than one namespace mapping is provided.
  • Improved support for mismatch in collation between database and database instance. However such mismatches should be strictly avoided.
  • Text fields in web UI now select all text when focus is moved to them. This will reduce keystrokes when the entire text needs to be changed.
  • Fix to some scrolling issues in text fields with database linked suggesstions (database pickers).
  • Fix to work-around for long array formulas. This bug was introduced in 2.9.13 and would affect formulas with length exactly equal to 256 characters.

Version 2.10.5

Released on 15 Oct 2018

  • Added support for SFTP with the functions FtpUpload.SK, FtpDownload.SK and FtpListDirectory.SK. A ftpConnections.config file is required to specify the configuration for each sftp connection. This release only supports the SFTP protocol. Future releases will support FTP and FTPS protocols also.
  • Fix to SendEmail to accept multiple email addresses in a single value separated by comma. This was broken in 2.10.2 when adding support for implicit SSL protocol.

Version 2.10.4

Released on 12 Oct 2018

  • Added ability to ignore certificate validation errors when sending emails. This can be configured by creating a file called IgnoreCertificateErrors.txt in the same folder as the smtp config file and adding hosts for which errors should be ignored, one host per line.
  • Added support to provide dates as text in the d/MMM/yyyy format for scalar inputs when running activity via API.
  • Fix to running activities via API. This was broken in 2.10.1.
  • Fix to immediate output calculation for date and boolean inputs.
  • Improved error message when database connection is not found in connections.config.

Version 2.10.3

Released on 10 Oct 2018

  • Raised string length limit from 32767 (Excel's limit) to 16777216 (16 MB of UTF8). Values as seen in Excel cells will still be truncated to 32767 characters but SheetKraft will internally work with longer strings.
  • Fix where files were not getting copied to shared output folders if StaticPath.SK was used.
  • Fix to Activity run status page where unnecessary API calls were being made.
  • Fix to ExportSheets UI where Replace Existing File checkbox used to get hidden if file path was not relative.

Version 2.10.2

Released on 4 Oct 2018

  • Improved implementation of TEXT when format string does not have a zero before the decimal point.
  • Added support for Implicit SSL protocol for sending emails. SendEmail should be tested in UAT before applying this patch to production.
  • Exposed logging methods to plugin code.
  • Improved warnings reported when html template for email does not have the proper tags.
  • Added a setting for the name of the connections.config file. This makes it easy to keep multiple files and quickly switch between them.
  • Addin updates can now be downloaded from the local server installation. An update is automatically triggered on login when the addin version is behind the server version. This will take effect from the next version onwards.
  • ApplyPatch.ps1 now works even if only the full zip file is placed in patches folder. It no longer needs both patch and full zips. This will take effect from the next version onwards. To use this functionality in this version itself, you can manually replace the ApplyPatch.ps1 file from the full zip before running it.
  • Fix to DataFromText when encoding is UTF 16 little endian with byte order mark.
  • Fixed rendering glitch on Activities screen when there is only one schema.
  • Fix to reset password link in email. This was broken in the previous version due to a library upgrade.
  • Fixed timeout error when attempting to activate license in online mode.
  • Fix to retain case of schema in PostgreSQL. It is recommended that schema names should be all lowercase. Display names can be anything.
  • Fixed an issue where login might have failed unexpectedly.
  • Fix to Security Matrix page.
  • Fixes to queries for email triggers.

Version 2.10.1

Released on 13 Sep 2018

Starting from this version all components including the addin will require the .NET Framework 4.7.2

  • Support for PostgreSQL database backend
  • Updated the SheetKraft logo.
  • Support for outputs whose value is calculated immediately when an input is entered in the web UI.
  • Support for protecting the sheet (not encrypting the workbook) with a password in ExportToExcel.
  • Support for including a folder in the activity package without including any files in the folder.
  • The state of checkboxes in the Files tab of the Define Activity window is now saved on clicking Save.
  • Added a modified by field to track the user account used to publish activity versions. This information is now shown in the web UI.
  • Enforced a stronger password policy when creating new users or changing / resetting passwords of existing users.
  • Improved error reporting in DataFromHtml.
  • Improved error reporting in ExportToWord.
  • Added support for "is contained in", "is the beginning of string" and "is the ending of the string" in the filters in DataFromDatabase
  • Fixed issue where belongs to range filter in DataFromDatabase would lead to an error if the column collation did not match the default collation of the database.
  • Fix to loading of merged cells. There were cases where merged cells would sometimes not be read in.
  • Fix to filtering by schema in Activity Versions page.
  • Fixed issue where passing a scalar value to response headers instead of an array was causing an error.
  • Fixed issue where DataFromEmail was opening eml file in read-write mode instead of read-only mode.
  • Fixes to ExportToDatabase UI in loading of key columns.
  • Disabled automatic update checks from addin since it is not desirable to auto-update addin independently of the server components. Added check that prevents login to the server if addin version is older than server version.

Version 2.9.14

Released on 29 Aug 2018

  • Added a StaticPath.SK function. With this, it is no longer necessary to define a static folder input for any activity. The step of configuring the static folder via preset values is also eliminated. staticFolders.config file is still required. Existing activities with static folder inputs will continue to work but should be migrated to use this feature.
  • Added a download all outputs button. This allows downloading all output files of an activity as a single zip file.
  • Fixed some bugs in template based export in ExportToExcel.SK related to cell widths and heights.
  • Fixed issue where separator line between inputs was not being shown on web UI if the input was optional.

Manual Download links (if script based download fails)

Version 2.9.13

Released on 20 Aug 2018

  • Added support for template based export in ExportToExcel.SK. The workaround for supporting long formulas in Excel has been improved but has not been sufficiently tested. Use this update only if this functionality is needed immediately.
  • Removed the x-SheetKraftVersion from response for API run calls for activities. This avoids disclosing unnecessary information.
  • Improved usability of UI for DataFromDatabase with Filter by initializing the result range correctly (just below the headers).
  • SerialNumber.SK now copies formats from the first cell. This is useful when working with dates.
  • Usage of NOW function prompts user to use Now.SK instead.
  • Fixed error message in applying patch when ActivityRunner is not installed as a service. The error message used to state incorrectly that application pool was not found.

Version 2.9.12

Released on 16 Jul 2018

  • Added support to download all files from a checklist run.
  • Added a prompt to commit or rollback transaction when running any activity in addin that connects to the database. This gives more control over pushing data into the database during activity setup.
  • Improved error message when StartActivity is used on an activity with Prevent Simultaneous Runs checked.
  • Fix to Invalid License being shown on web UI on Internet Explorer (This had no impact on any functionality).
  • Fix to error on Activity Linkage page when editing existing linkage.
  • Fix to error on Edit User page.

Version 2.9.11

Released on 2 Jul 2018

  • Added support for cancellation in DownloadFiles.SK and HttpRequest.SK during download of response body.
  • Supported fallback for ExtractZip.SK using DotNetZip library to allow extracting files with incorrect headers.
  • Fixed bug in calls to activities via auto-generated API. This would sometimes run older versions of the activity.
  • Fixed scroll behavior on large tables in Activity Run History page (View All Runs).
  • Fixed incorrect behavior of GetCurrentUser.SK when run from the addin.
  • Fixed timeout issue in HttpRequest
  • Bug fix in COUPNUM function when gap between settlement date and maturity is very large.

Version 2.9.10

Released on 26 Jun 2018

  • Added support for auto-backup and auto-restore. This is based on settings in new databaseMaintenance.config file and will have to be manually enabled by specifying values for dbPrimaryBackupFolder or dbRestoreFolder.
  • Added new UI for comparing versions of activities across environments
  • Supported streaming download instead of buffered download in DownloadFiles.SK. This should prevent timeout issue on large files.
  • Support for customizing the title of the Run Activity page.
  • Fixed bug in ExportToText UI
  • Supported non-text headers in ExportToExcel
  • Fixed incorrect merging of headers when exporting only specific columns as per custom condition.
  • Fixed ability to reset passwords for users whose credentials are not in Active Directory.
  • Fix in dismissing notifications.

Version 2.9.9

Released on 14 Jun 2018

  • Bug fix in HttpRequest.SK when response has no content.
  • Implementation of several financial functions: ISPMT, IPMT, PPMT, MDURATION, ACCRINTM, ACCRINT, INTRATE, RECEIVED, DISC, PRICEDISC, YIELDDISC, PRICEMAT, YIELDMAT, DOLLARDE, DOLLARFR, TBILLEQ, TBILLPRICE, TBILLYIELD, SLN, SYD, VDB, DDB, DB, AMORLINC, AMORDEGRC

Version 2.9.8

Released on 12 Jun 2018

  • Support for password in SheetNames.SK.
  • Increased limit on maximum number of parallel http connections in ActivityRunner to facilitate email triggers for multiple inboxes.
  • Changed sheetkraft.com urls for addin license registration to use https.
  • Changed naming scheme of script files in web ui to prevent issue with browser cache.

Version 2.9.7

Released on 31 May 2018

  • Changed implementation of date conversion from web UI to work-around Chrome bug. New code is less likely to be impacted by browser bugs.
  • Notifications now remain collapsed until user explicitly opens them. This will be revisited in a future release.
  • Added support to provide a file name in HttpRequest.SK while still generating a temporary file.
  • Added logging code for email monitoring
  • Patch script now waits until Activity Runner starts even if it takes longer than 2 minutes.
  • Fixed patch script when directories were missing in target location.
  • Fixed cancellation from Checklists
  • Fixed loading of Activity Run History page when activity had a large number of file outputs.
  • Fixed downgrade code
  • Fixed UI of DataFromDatabase.SK when using a manual SQL query.

Version 2.9.6

Released on 4 May 2018

  • Bug fixes to HttpRequest.
  • Bug fixes for activities remaining in a 'Gathering Inputs' state. This bug was introduced in release 2.9.1

Version 2.9.5

Released on 25 Apr 2018

  • Added support for making requests over HTTP with HttpRequest.SK function. This function currently supports the following

    • Setting HTTP headers
    • Query parameters for GET requests
    • x-www-form-urlencoded parameters for POST requests
    • Writing response body to a file for all requests
    • Extracting status code, reason phrase and HTTP headers from the response

    There is no UI in this version. Also, support for more content types like multipart/form-data, files and json is lacking at present.

  • Improved optimization in VLookup.SK to handle some more cases with a hashtable based implementation.

  • Fix to saving and validation of email trigger conditions with multiple criteria.

Version 2.9.4

Released on 24 Apr 2018

  • Added support for explicit url (in addition to auto-discovery) for email connections. The emailConnections.config file supports a url=url_value in the email connection string.
  • Added support to include a domain for credentials for email connections. The emailConnections.config file supports a domain=domain_value in the email connection string.
  • Added support for bearer token authorization in addition to basic authorization for calling auto-generated api for running activities. This enables api calls via custom developed plugins into SheetKraftWeb where bearer token authorization is already available.
  • Added support for file inputs and outputs in auto generated api for running activities.
  • Fixed bug in processing emails with no subject.

Version 2.9.3

Released on 20 Apr 2018

  • Made a significant performance improvement in ExportToDatabase performance when exporting a large number of rows. To ensure optimal performance for large tables, creating a non clustered index on the columns that make up the batch key is recommended.
  • Added support to cancel activities when functions such as DataFromDatabase and ExportToDatabase are executing.
  • Minor improvements and fixes to patch application scripts.
  • Fixed bug where DataFromHtml was reporting wrong status codes.

Version 2.9.2

Released on 17 Apr 2018

  • Fixed spurious error in validating activity meta-data.
  • Minor improvements / fixes to patch scripts.

If an error is encountered when attempting to login from the addin, paste dll files from the Addin folder in the full download below into %localappdata%\SheetKraft. Be careful not to replace config files.

Version 2.9.1

Released on 13 Apr 2018

  • Automated the process of applying patches. As a one-time activity download the Apply Patch file, unblock it, and place it in the same folder as Web.config. This script can be run (with administrative rights) to apply a patch or roll back to an older version. Roll back to 2.8.* is supported with a manual process. Rollbacks from future versions will be available via the script. ActivityRunner and SheetKraftWeb check the hashes of all files they depend on (other than config files) and will fail to start if any of the hashes do not match. This condition will be reported in the logs. This ensures that the application does not start in an incomplete or corrupted state. The ApplyPatch script can be used to repair a corrupt installation as it will restore files as necessary.
  • Added support to monitor incoming emails to the Inbox of an Exchange mailbox and trigger activities for each incoming email. The account details and credentials are maintained in an emailConnections.config file. The configuration for trigger conditions is specified during publishing the activity. Currently this information has to be entered as json. A UI will be available for this in a future release. Currently ActivityRunner needs to be restarted if there is a change to the emailConnections.config file or there is any change to an activity that is to be triggered via incoming email. This requirement will be removed in a future release.
  • Added a MemoryCost field to provide an estimate of the memory requirements for an activity. There is a corresponding MemoryCapacity for ActivityRunner. The capacity is treated as infinite if it is not specified or is set to zero. The cost is treated as zero if it is not specified. The ActivityRunner will ensure that it only picks up activities such that the total cost of running activities does not exceed its capacity even if some threads are free. Activities that are not picked up will remain queued until capacity becomes available. This mechanism can be used to prevent low or out-of-memory conditions.
  • Added GetCurrentUser.SK function. This returns information about the user who runs the activity from within the activity. When called from the addin, it returns the information for the admin user (User Id = 1).
  • Activity run log entries now show up as notifications to all users who have access to view the activity. The notifications expire automatically after 3 days and can be dismissed manually by the user at any time before that. Clicking on the notification takes the user to the activity run page and dismisses the notification.
  • Added support to show activity run log entries on checklist run page.
  • Improved the readability and display of activity run log entries on the web ui.
  • Added support to display an activity in one or more schemas other than the schema that the activity belongs to. This is basically a shortcut to the activity and has no impact on the way rights are defined or enforced. UI support for configuring this will be added in a future release.
  • Improved the web UI to create activity linkages by adding a Schema drop down.
  • Changed implementation of DownloadFiles.SK to use .NET HttpClient code instead of the WININET API to support calls from server side. This functionality will be expanded in future releases (with more functions) to support providing custom values for headers, cookie based authentication flows etc.
  • Fixed bug in SendEmail.SK when the to address is #N/A
  • Fixes to DataFromJson.SK and DataFromXml.SK. Some of the features of these functions may be revised in a future release.
  • Fixed the display of unspecified optional inputs on the Activity Run and History pages.
  • The last successful login information now shows the time of last token renewal instead of the time of last logout. Also logout times are tracked more accurately in case of expired sessions.
  • Added support for customizing the name of the Start button on the Run Activity page. UI support for configuring this will be added in a future release.

Version 2.8.33

Released on 9 Apr 2018

Download patch to update an existing installation.

Download the full set of files for a fresh installation.

  • Clicking on the SheetKraft icon at the top now goes to the activities page.
  • Improved behavior of picker so that clicking in the picker shows a list of available items instead of only the selected item after an item is selected
  • Activity outputs that have no rows are now hidden.
  • Skipped validation of activity inputs with RelativePath formulas. This should prevent annoying incorrect error messages during publishing.
  • Pressing Ctrl + F in Activities window moves focus to the search box.
  • Fixed incorrect generation of SelectRows formula if MaxRows is blank.
  • Fixed missing gray border around checklists when there is only one schema.
  • If file upload fails because the session had already expired before beginning the upload, the user is taken to the login page and returned to the activity page on successful login.
  • Fixed bug where trying to open a non-existent file on a remote drive within DataFromText could lead to a hang.
  • Fixed bug where * was being ignored for validation purposes in List Picker definition for single cell activity input.

Version 2.8.32

Released on 23 Mar 2018

  • Added display of logged in url on publish window in addin.
  • Changed the position of progress bar on Activities window in addin to ensure it is not hidden when window size is small.
  • Fix to crash in warnings window in addin caused due to incorrect status codes for DataFromHtml.
  • Fix to bug in ExportToExcel where header formatting was ignored in some cases.
  • Fix to bug in FormatCellContents when used with a condition that evaluates to false for every row of data.

Version 2.8.31

Released on 16 Mar 2018

  • Added DataFromHtml function. This is similar to the deprecated Addin only DataFromWeb, except that it takes a columns argument and does not support web urls. It supports direct html or html file path and works both on addin and server.
  • Added a clean way to run activities from an API call. This is useful for integration with other software. A post request to the url /api/.<activityname> with basic authentication headers and json body like {inputs:{<inputname>:<input_value>,...}} is supported and returns the activity outputs along with status. Support for file inputs or outputs is not yet present. Table inputs and outputs are supported. The link provides full details.
  • Fix to bug in FillDown when the range being filled down contained a formula containing a range reference (not cell reference) to the fill input range.
  • Added default scheme http:// if no scheme is entered in the url when logging in from the addin.
  • Added missing scroll bars in ExportToText UI.
  • Fix to crash if files that will be published as part of an activity are open at the time of publishing. An error message is shown now.
  • Fix to bug when using Max Rows field in DataFromDatabase.

Version 2.8.30

Released on 6 Mar 2018

  • Added version column to "View All Runs" page for an activity.
  • Added server license information in the header section of the web ui.
  • Fix to display schemas on activities page in order defined in ActivitySchemas table.
  • Fix to ExportToText UI to retain the formula used (if any) for the Append argument.
  • Fixed bug in dependency addition in OFFSET. This affected capture of dependencies for Define Function.
  • Added an error message if define function does not capture the inputs of an inner defined function correctly. This issue will be fixed in a future release.
  • Fix to crash in ExportSheets when exporting sheets with charts and the sheet names contained spaces or special characters.
  • Added missing Category information to many SheetKraft functions. These functions will now show up in the SheetKraft category in Excel's Insert Function UI.

Version 2.8.29

Released on 26 Feb 2018

  • Improved database picker in activity inputs by filtering out NULL or empty values.
  • Checking the top level checkbox in a two-level database picker now checks all second level entries by default.
  • Added support to save and delete entries in the local connections.config file from the addin.
  • Fixed bug where executing a stored procedure or query without a SELECT statement using DataFromDatabase would lead to a crash.
  • Fixed sizing of column containing download button links in cases where the file name is long on the activity run history page.
  • Fixed bug in EDate.SK

Version 2.8.28

Released on 23 Feb 2018

  • Menu option for columns moved to the top of lists instead of bottom in Filter, Pivot, Lookup UIs.
  • Improved selection behavior in column selection / editing sections of Filter, Pivot, Lookup UIs.
  • Improvement to scrolling in UIs with multiple scrolling areas. Double clicking within an area now scrolls the outer view to bring the area completely into view.
  • Improvements to column selection UI for ExportToText.
  • Support for controlling whether a column will be exported or not based on a run-time condition in ExportToText.
  • Added progress indicators on Purge Activity Runs page.
  • Download of activities now picks up proxy settings from Internet Explorer preventing download errors in certain cases.
  • Support for specifying a manually downloaded activity file (from web UI) in case download from addin fails for some reason.
  • Added a status page for all activities. This can be used to monitor currently running activities.
  • Improved error message in DataFromExcel when the range where data is expected is blank.
  • Improved error message in ExportToDbf with improved validation for field values and lengths
  • Added Schema column and filter to all activity versions page. This page is now useful to see all changes to activities in a schema of interest.
  • Fix to showing error messages in the web UI on the activity run page. The messages were not showing up until the activity run completed.
  • Fix to the main activities page on the web UI which was failing to load in some cases.
  • Fix to crash in Filter UI if the condition specified is not valid.
  • Dropped code that reads the SheetKraftRead connection string. This is now no longer required.

Version 2.8.27

Released on 12 Feb 2018

  • Added support for DURATION function.
  • Added support for ignoring the case of user name for licensing.

Version 2.8.26

Released on 31 Jan 2018

  • Optimized Match Only Once functionality in VLookup.SK.
  • Optimized VLookup.SK for all match conditions that depend only on the right table.
  • Added a link to the checklist run page from an activity run page if the activity was run as part of a checklist.
  • Improved error reporting in various functions.
  • Fixed application of format functions called from a defined function that uses ExportSheets.
  • Fix to ExportToText UI which was not loading a formula with the Partition By functionality.
  • Fixed error in ExportToExcel when the partition by column was #N/A or any other error value.

Version 2.8.25

Released on 23 Jan 2018

  • Support for saving partial work in the Define Activity window. 'Save and Close' button split into separate Save and Publish buttons.
  • Added New Activity button under Define Activity menu in the ribbon.
  • Improved error reporting when fetching activity inputs from the database or saving activity outputs to the database fails for any reason.
  • Supported cancellation in several functions including DataFromExcel.
  • Added support for ABS function in the filter criterion of DataFromDatabase.
  • Optimized ISNA() and NOT(ISNA()) conditions in VLookup.SK
  • Improved error reporting in SendEmail
  • Restyled the checkboxes shown in grids to match the look of the checkboxes shown elsewhere.
  • Fixed Activity Run History page which was showing the same runs multiple times.
  • Fixed search on the activities page to also search checklists.
  • Fix to case where Filter UI with a Belongs To Range criterion was failing if a sheet name contained a # character.

Version 2.8.24

Released on 17 Jan 2018

  • Added a search box in the web UI for activity inputs displayed with a two level list of checkboxes grouped by category.
  • Fixed issue where file names with spaces in downloaded files in Internet Explorer were not shown correctly.
  • Fixed missing horizontal scrollbar in the web UI for table outputs of activities.

Version 2.8.23

Released on 12 Jan 2018

  • Added support to pass raw json in the first argument to DataFromJson.SK instead of a file path. File path remains supported.
  • Auto-generated change descriptions during syncing activities wherever possible and fixed some corner cases.
  • Fixed a UI loading bug in ExportToExcel.SK when modifying an older file.
  • Fixed UI for FormatCellContents.SK to support condition
  • Improved error reporting in ExportToXml.SK.
  • Fixed bug in error reporting when both an error and a warning with the same status code are reported from the same formula.
  • Fixed bug in ExportToExcel.SK when applying inner horizontal borders to a range containing only one row.

Version 2.8.22

Released on 10 Jan 2018

  • Added support to send a previously generated email using SendEmail.SK.
  • Support for specifying email addresses separated by semi-colon (;) in SendEmail.SK.
  • Added schema column to Purge Activity runs page
  • Fix to loading of existing formulas in Filter, Pivot, VLookup UIs when the source range contained only error values.
  • Fixes to SendEmail UI.
  • Fixed bug in DateValueEx.SK related to conversion of time strings of the form 12:mm:ss am.

Version 2.8.21

Released on 9 Jan 2018

  • Added css classes logo-sk and logo-client on the div tags for logos to allow external styling if necessary.
  • Improved StartActivity.SK to support starting activities with optional inputs.
  • Fix to FillDown UI where it used to suggest the range on the right hand side even if the range on the left side was closer.
  • Fix to INDIRECT when it returns a #REF! value.

Version 2.8.20

Released on 8 Jan 2018

  • Improved Activity Run History page to use automatic scroll (The Load More button is now removed)
  • Improvements to layout of Filter UI
  • Improvements to layout of VLookup UI
  • Improvements to layout of Pivot UI
  • Fix to ExportToExcel where gap between multiple exports was getting ignored.
  • Fix to grid displays on various web pages. The grid no longer steals focus.

Version 2.8.19

Released on 4 Jan 2018

  • Added support to display a custom icon on the portal. To use this feature, place an image in the /dist/images folder and add the text var clientLogoName = "image_file_name"; after the text var baseUrl = ""; in the index.html file
  • Exposed CardHeader for use by plugins.

Version 2.8.18

Released on 2 Jan 2018

  • Added append support to ExportToText.SK. This makes it possible to generate a text file in multiple steps.
  • Improved reporting of 'out of memory' conditions. The error will be shown as a normal failure instead of as a system error.
  • Fixed issue where memory for an activity run was not being released until the start of the next activity run on the same thread.
  • Fix to DataFromDbf.SK where filenames longer than 8 characters were causing an error.
  • Fixed bug where VLookup.SK was consuming a very large amount of temporary disk space when both input ranges were very large.

Version 2.8.17

Released on 1 Jan 2018

  • Added function DataFromDbf.SK to read dBase III files. There is no UI for this at present.
  • Fixed ExportToXml to remove a repeated element if the corresponding range is #NULL!
  • Removed Add button from Activities page and drawer.
  • Prevented session from getting auto-logged out when a file upload is in progress.
  • Improvement to width calculation in grid for activity outputs.
  • Fix to StackRows. It was returning a #VALUE! when one of the arguments was an IF formula returning a #NULL!

Version 2.8.16

Released on 28 Dec 2017

  • Added the ability to define activity inputs as optional. If the user does not specify any value for an optional input, the value in the original setup will be used. This value may be a calculated value instead of just being a constant. Activities with all optional or preset inputs can also be scheduled.
  • Added support for showing a list of checkboxes for an activity that needs a list of values as inputs. The list of checkboxes can also be grouped into categories. This grouping functionality is enabled by specifying a 'Group' column in the activity input picker definition.
  • Improved RegexSplit.SK to support a column of values as an input instead of just a single value. The maximum number of columns expected should be provided as an additional input when using this functionality.
  • Added an extra argument to JoinText.SK to ignore empty values when joining.
  • Improved the performance and reliablitity of code to purge activity runs and files associated with them.
  • Added a menu option (at the top of the completed activity run page) to purge the run. This can be useful when there are very large input or output files for the run that do not need to be preserved in the database.
  • Auto-generated change descriptions when syncing activities between servers. This simplifies the process of syncing.
  • Re-organized the ExportToExcel.SK user interface to make it easier to understand.
  • Fixed ExportToExcel.SK to generate inner horizontal borders (if present). These were being ignored.
  • Added a Eq.SK function to compare cell values exactly instead of logically. For example Eq.SK(#N/A,#N/A) returns TRUE.
  • Modified the CompareRows.SK user interface to generate a formula with Eq.SK instead of using the = operator.
  • Added ability to filter / search in Purge Run Data page.
  • Added ability to filter / search in rights pages.
  • Added support for exact search using quotes in a table output for an activity.
  • Implemented missing RegionAcross functionality in DataFromExcel.SK for .xls files. This was previously only implemented for .xlsx files.
  • Set the height and width of grids used for table outputs to reduce unnecessary space on the page.
  • Improved error message when static folder config does not get picked up by ActivityRunner because it has not been started.
  • Improved error message in ExtractZip.SK when input file is not a zip file.
  • Changed full file paths in error messages displayed on the web UI with just file names. This makes error messages more readable and also prevents disclosure of server file system details.
  • Fixed an "Unexpected error" message shown on the Security Matrix page when the item on which a right is granted gets deleted.
  • Fix to Activity Linkage page when one of the linked activity inputs had a preset value. The page was creating an incorrect linkage in this case.
  • Fix to ExportToExcel.SK when exporting a source range that exceeds Excel's row limits using the partition functionality. The operation was failing in this case.
  • Fix to handling of Ctrl + Page Up / Down shortcuts from within a SheetKraft RefEdit box when a hidden worksheet is present. An error message was being shown in this case
  • Fix to the filename shown in the download popup in Internet Explorer when the file name contained non-ASCII characters.
  • Fixed bugs in DeleteRowsFromTable.SK
  • Fixed the auto-update functionality of the Excel addin. It was deleting the connections.config file.

Version 2.8.15

Released on 9 Nov 2017

  • Bug fix in WaitForActivity.SK when the activity has no inputs. This case was causing a crash.

Version 2.8.14

Released on 7 Nov 2017

  • Added support for setting attribute values in ExportToXml.SK

Version 2.8.13

Released on 6 Nov 2017

  • Improved error message in DataFromExcel when the file is corrupt. The new error message specifies the cell which could not be read.

Version 2.8.12

Released on 3 Nov 2017

  • Added a LockoutTimeSpan setting in Web.config to control the period of time for which a user gets logged on consecutive failed logins.
  • Added support for multiple email configurations. Each configuration can have a different from address. The SendEmail.SK function supports specifying the desired configuration by name.
  • Fixed CountUnique in VLookup.SK when there are no matches. It was returning 1 instead of #N/A. To get a value of zero in this case, the IfNoMatch functionality can be used.
  • Fix to StartActivity.SK where the newly started activity would not get picked up until the current activity completed. This resulted in a dead-lock when the current activity also called WaitForActivity.SK on the newly started activity.

Version 2.8.11

Released on 26 Oct 2017

  • Added error message if template path in EmailBody.SK was not provided correctly.
  • Fixed cancellation of checklists. Clicking on the cancel button had no effect.
  • Fixed VLookup.SK and PivotTable.SK to return a full row of #NULL! values when the source range is #NULL!
  • Fixed issue where usage of IfNoMatch.SK in VLookup.SK when reporting all matches was always producing the "no match" value. It now has no effect.