Browser-Side Spreadsheet Functions for Extensible Calculations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Network-based spreadsheet services face limitations in extensibility due to security and reliability concerns, making it infeasible to run end-user code, as they are not 'owned' by the user, and lack features compared to local spreadsheet applications.

Innovation Solution

The architecture employs user-defined functions (UDFs) executed in the web browser, allowing custom functionality while maintaining spreadsheet calculation state across a backend server and browser, enabling synchronous or asynchronous execution, dynamic registration/unregistration, and preventing infinite calculation loops.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If end-user code is run on the backend calculation server, then spreadsheet functionality can be extended, but security and reliability concerns arise because the network-based service is not owned by the user

Engineering Contradiction:
Improvespreadsheet extensibilityVSAvoidservice reliability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent divides the spreadsheet calculation system into two segments: standard functions executed on the backend calculation server and custom user-defined functions (UDFs) executed in the user's web browser. This segmentation allows the backend to maintain security and reliability while the browser handles extensible custom code, resolving the contradiction between service reliability and spreadsheet extensibility.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If end-user code is run on the backend calculation server, then spreadsheet functionality can be extended, but the same security and reliability concerns apply

Engineering Contradiction:
Improvespreadsheet extensibilityVSAvoidsecurity concerns
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The patent introduces the user's web browser as an intermediary between the backend calculation server and the execution of custom code. The browser acts as a sandboxed environment that isolates user-defined functions from the backend server, allowing extended functionality while protecting the server from security risks. This intermediary approach enables spreadsheet extensibility without compromising backend security.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If custom functions are executed in the web browser, then security concerns are avoided, but calculation state must be maintained across backend server and browser

Engineering Contradiction:
Improveservice reliabilityVSAvoiddistributed calculation state management
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements a feedback mechanism where the backend calculation server sends calculation requests to the browser, executes standard functions, and receives results. For custom UDFs, the browser executes the functions and returns results to the backend, which then continues the calculation chain. This feedback loop maintains calculation state across the distributed system, managing the complexity of coordinating between backend server and browser while ensuring reliability.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9389891B2Custom browser-side spreadsheet functions
Publication Date: 2016.07.12 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9389891B2 patent drawing
  • US9389891B2 patent drawing
  • US9389891B2 patent drawing

AI summary

Architecture that enables the capability to call user-defined functions (UDFs) within the hosting page, and from within a spreadsheet. UDFs can be used to add functionality to spreadsheet models. Spreadsheet calculations are spread across a backend calculation server and the web browser. Spreadsheet calculation state is maintained as browser functions are calculated. Moreover, the browser UDFs can be executed synchronously or asynchronously. The architecture also provides capability to dynamically register/unregister UDFs at runtime, which can then be called from the spreadsheet model and executed remotely), and the capability to define a manifest that can include all of the UDF definitions, infinite calculation loop situations are also prevented. The UDFs have full access to the page DOM (document object model).