IP Library Granted Patent US 11,157,690
Granted Patent B2
US 11,157,690 · App. 15/439,341 · Granted Oct 26, 2021

Techniques for asynchronous execution of computationally expensive local spreadsheet tasks

Inventors: Dmitry Zusman (Redmond, WA); Aleksandr Malyshev (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F40/18G06F9/4843
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,157,690
App. No.
15/439,341
Granted
Oct 26, 2021
Kind
B2
Abstract

The techniques described herein facilitate asynchronous execution of computationally expensive spreadsheet tasks and. In some embodiments, asynchronous calls to remote services for handling complex processing tasks such as, for example, complex calculations involving large data sets from one or more spreadsheets of a workbook are described. The handling can include generating a job including a data set from one or more spreadsheets and an instruction directing a remote service to asynchronously execute a computationally expensive spreadsheet task. Responsive to sending the remote service a request to perform the job, a persistent job identifier (ID) associated with the job is received by the spreadsheet application and embedded in (and/or otherwise associated with) at least one or more of the spreadsheets of the workbook. The job is then asynchronously executed by the remote service and the results are accessible from any client device having access to the workbook using the embedded or associated job ID.

Claims (49)

1. A method, executing on a computing device, of operating a spreadsheet application for directing a remote service to asynchronously execute a spreadsheet task that performs a calculation pertaining to a data set within a spreadsheet, the method comprising:

generating a job including:

data from the spreadsheet of the spreadsheet application identifying the spreadsheet task and an instruction directing the remote service to asynchronously execute the spreadsheet task on behalf of the spreadsheet application;

sending, to the remote service, a request to perform the job;

responsive to sending the request, receiving, from the remote service, a persistent job identifier (ID) created by a job execution registry component of the remote service, wherein the persistent job ID is a tracking identifier of the job, specific to the remote service, that is usable by the spreadsheet application to access a state of execution of the job within the remote service; and

embedding the persistent job ID in the spreadsheet.

2. The method of claim 1 , further comprising:

generating a job result retrieval request that requests a result of execution of the job from the remote service, wherein the job result retrieval request includes the persistent job ID;

sending the job result retrieval request for delivery to the remote service; and

integrating the results of the spreadsheet task into the spreadsheet.

3. The method of claim 2 , wherein the job result retrieval request includes an indication of a type of client running a spreadsheet application or a type of the spreadsheet application, and wherein the result of execution of the job is formatted in accordance with the type of client running the spreadsheet application or a type of the spreadsheet application.

4. The method of claim 1 , further comprising:

periodically receiving, from the remote service, an update to a status of execution of the job; and

rendering the update to the status in a graphical user interface of the spreadsheet application that displays the spreadsheet.

5. The method of claim 4 , wherein the update to the status is received responsive to sending a request for the status to the remote service, and wherein the request for the update to the status includes the persistent job ID.

6. The method of claim 4 , wherein rendering of the update to the status comprises rendering the update in a status bar along with a status of other offloaded spreadsheet tasks.

7. The method of claim 1 , further comprising:

accessing, from a central or cloud-based collaboration or content service, a spreadsheet workbook that comprises a plurality of spreadsheets including the spreadsheet, and wherein the persistent job ID is stored in a cell of the spreadsheet and a result of execution of the spreadsheet task is stored in at least one cell of another spreadsheet of the plurality of spreadsheets.

8. The method of claim 1 , wherein the embedding of the persistent job ID in the spreadsheet comprises embedding the persistent job ID as a link enabling access to results of executing the spreadsheet task via the remote service.

9. The method of claim 1 , further comprising: determining that the spreadsheet task exceeds a computational processing requirement threshold for executing the spreadsheet task using the spreadsheet application, and wherein the request to perform the job is sent to the remote service based on the determining that the spreadsheet task exceeds the computational processing requirement threshold.

10. A system comprising:

at least one processor; and

a memory, operatively connected with the at least one processor, storing computer-executable instructions that, when executed by the at least one processor, causes the at least one processor to execute a method that comprises:

generating a job including:

data from a spreadsheet of a spreadsheet application that identifies a spreadsheet task and an instruction directing a remote service to asynchronously execute the spreadsheet task that performs, on behalf of the spreadsheet application, a calculation pertaining to a data set within the spreadsheet,

sending, to the remote service, a request to perform the job,

responsive to sending the request, receiving, from the remote service, a persistent job identifier (ID) created by a job execution registry component of the remote service, wherein the persistent job ID is a tracking identifier of the job, specific to the remote service, that is usable by the spreadsheet application to access a state of execution of the job within the remote service, and

embedding the persistent job ID in the spreadsheet.

11. The system of claim 10 , wherein the embedding of the persistent job ID in the spreadsheet comprises embedding the persistent job ID as a link enabling access to results of executing the spreadsheet task via the remote service.

12. The system of claim 10 , wherein the method, executed by the at least one processor, further comprises: determining that the spreadsheet task exceeds a computational processing requirement threshold for executing the spreadsheet task using the spreadsheet application, and wherein the request to perform the job is sent to the remote service based on the determining that the spreadsheet task exceeds the computational processing requirement threshold.

13. The system of claim 10 , wherein the method, executed by the at least one processor, further comprises:

generating a job result retrieval request that requests a result of execution of the job from the remote service, wherein the job result retrieval request includes the persistent job ID,

sending the job result retrieval request for delivery to the remote service, and

integrating the results of the spreadsheet task into the spreadsheet.

14. The system of claim 10 , wherein the spreadsheet is part of a spreadsheet workbook that comprises a plurality of spreadsheets, and wherein the persistent job ID is stored in a cell of the spreadsheet and a result of execution of the spreadsheet task is stored in at least one cell of another spreadsheet of the plurality of spreadsheets.

15. A computer storage device storing computer-executable instructions that, when executed by at least one processor, causes the at least one processor to execute a method comprising:

generating a job including:

data from a spreadsheet of a spreadsheet application that identifies a spreadsheet task and an instruction directing a remote service to asynchronously execute the spreadsheet task that performs, on behalf of the spreadsheet application, a calculation pertaining to a data set within the spreadsheet,

sending, to the remote service, a request to perform the job,

responsive to sending the request, receiving, from the remote service, a persistent job identifier (ID) created by a job execution registry component of the remote service, wherein the persistent job ID is a tracking identifier of the job, specific to the remote service, that is usable by the spreadsheet application to access a state of execution of the job within the remote service, and

embedding the persistent job ID in the spreadsheet.

16. The computer storage device of claim 15 , wherein the embedding of the persistent job ID in the spreadsheet comprises embedding the persistent job ID as a link enabling access to results of executing the spreadsheet task via the remote service.

17. The computer storage device of claim 15 , wherein the method, executed by the at least one processor, further comprising: determining that the spreadsheet task exceeds a computational processing requirement threshold for executing the spreadsheet task using the spreadsheet application, and wherein the request to perform the job is sent to the remote service based on the determining that the spreadsheet task exceeds the computational processing requirement threshold.

18. The computer storage device of claim 15 , wherein the method, executed by the at least one processor, further comprising:

generating a job result retrieval request that requests a result of execution of the job from the remote service, wherein the job result retrieval request includes the persistent job ID;

sending the job result retrieval request for delivery to the remote service; and

integrating the results of the spreadsheet task into the spreadsheet.

19. The computer storage device of claim 15 , wherein the spreadsheet is part of a spreadsheet workbook that comprises a plurality of spreadsheets, and wherein the persistent job ID is stored in a cell of the spreadsheet and a result of execution of the spreadsheet task is stored in at least one cell of another spreadsheet of the plurality of spreadsheets.

20. The method of claim 1 , wherein the embedding further comprises embedding, in the spreadsheet, a status bar indicating a progress of the job by the remote service, and wherein the status bar is a temperature indicator providing one or more colors indicating a completion state of the job.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2017
From: ZUSMAN, DMITRY; MALYSHEV, ALEKSANDR
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 041342/0653 →
Continuity (1)
Related Publication 20180239749A1 · Aug 23, 2018
Cited By (1)
US 12,511,472