How does SSFeatures Work?
SSFeatures is an extension that you add to your browser, and it interacts directly with the HTML and JavaScript on the Smartsheet website. SSFeatures interacts directly with the HTML to add new buttons, input fields, and simulates actions like clicking a button.
SSFeatures leverages Smartsheet's own JavaScript code, calling the same functions that Smartsheet uses. This ensures consistent behavior, minimizes the risk of breaking anything, and maintains a seamless user experience.
This is a major advantage for security. Since SSFeatures handles everything in your browser, it never sends your data to our servers, and you don't need to provide a Smartsheet API key.
SSFeatures uses your browser's
Local Storage to securely save all of your settings. This approach ensures that
none of your settings are ever sent to our servers or stored in any database, keeping everything private and contained within your browser. The one downside is that if you uninstall SSFeatures, your browser will automatically delete all saved settings, and they cannot be recovered.
Using Automatic Sorting as an example:
- The user opens Smartsheet.
- SSFeatures waits until Smartsheet loads the HTML and JavaScript.
- SSFeatures adds a new "SSFeatures" button into the HTML.
- SSFeatures reads the user's settings from the browser's local storage.
- SSFeatures notices that "automatic sorting" is enabled on this sheet.
- SSFeatures calls Smartsheet's
sortGridRows_invokeSort
function to sort the data.
If you're a developer and familiar with using your browser’s developer tools, you can paste the following code into your browser's console to interact directly with Smartsheet’s code. This snippet selects and scrolls to the first column in your sheet, which is the exact same function used by SSFeatures in its "Hide / Unhide Columns" feature:
// Get the Smartsheet grid object.
grid = formObjectHandler.getFormObjectByConstructor(JscMegaGrid);
// Get the first column in the grid.
column1 = grid.gridColumnSet[0];
// Select the column so that it highlights.
column1.select();
// Scroll the user's page to this column
grid.scrollToView_column(column1);