IP Library Granted Patent US 11,853,692
Granted Patent B1
US 11,853,692 · App. 16/411,118 · Granted Dec 26, 2023

Performing server-side and client-side operations on spreadsheets

Inventors: Daniel Gundrum (New York, NY); Zachary Erik Lloyd (Brooklyn, NY); Joshua Ari Danziger (Metuchen, NJ); Amod Karve (Clifton, NJ)
Assignee: Google LLC
G06F40/18
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,853,692
App. No.
16/411,118
Granted
Dec 26, 2023
Kind
B1
Abstract

A method for obtaining server-side and client-side calculations performed in a document includes presenting, on a client computer, the document stored on a server and receiving an input, where the input causes a calculation in the document. The client computer performs the calculation on the client computer and sends the input to the server to concurrently perform the calculation on the server. The client computer obtains a first result from the calculation performed on the client computer and a second result from the calculation performed on the server, selects the first result or the second result as a selected result based on which of the first result or the second result is obtained quicker from the calculation performed on the client computer and the calculation performed on the server, and presents, in the document, the selected result to the user.

Claims (55)

1. A method comprising:

launching, on a client computer, a document editing application associated with a cloud storage system, wherein the document editing application has a client calculation engine for performing spreadsheet calculations on the client computer;

presenting, via the document editing application on the client computer, a web-based collaborative spreadsheet stored on the cloud storage system, wherein the web-based collaborative spreadsheet comprises a plurality of cells, wherein calculations for one or more of the plurality of cells in the web-based collaborative spreadsheet are to be performed by at least one of the client calculation engine on the client computer or a server calculation engine on the cloud storage system;

receiving an input for a first cell of the plurality of cells in the web-based collaborative spreadsheet, wherein the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet causes a calculation that involves at least one or more second cells of the plurality of cells in the web-based collaborative spreadsheet; and

upon receiving the input that causes the calculation involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet:

determining to perform the calculation, caused by the input for the first cell of the plurality of cells and involving at least the one or more second cells of the plurality of cells, by the client calculation engine on the client computer or the server calculation engine of the cloud storage system,

wherein determining to perform the calculation by the client calculation engine or the server calculation engine is based on a network connection between the client computer and the cloud storage system, and one or more factors defining a speed of the calculation, the one or more factors comprising at least one of computing resources available at the client computer and the cloud storage system, or a type of the calculation;

responsive to determining to perform the calculation by the client calculation engine on the client computer,

performing the calculation, caused by the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet and involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet, by the client calculation engine on the client computer,

wherein responsive to determining to perform the calculation by the server calculation engine of the cloud storage system, the input is sent to the cloud storage system to perform the calculation by the server calculation engine of the cloud storage system;

obtaining a first result from the calculation performed by the client calculation engine on the client computer or a second result from the calculation performed by the server calculation engine of the cloud storage system; and

presenting, via the document editing application on the client computer, the obtained first result or second result in the web-based collaborative spreadsheet to a user.

2. The method of claim 1 , further comprising verifying accuracy of the obtained first result or second result using another result from the first result or second result that is obtained slower than the obtained first result or second result.

3. The method of claim 2 , wherein verifying the accuracy further comprises determining whether the other result matches the obtained first result or second result.

4. The method of claim 1 , further comprising sending the input to a plurality of servers of the cloud storage system to perform the calculation on the plurality of servers.

5. The method of claim 1 , further comprising storing, for a plurality of calculations, completion information of whether a result of each of the plurality of calculations completed quicker by the client computer or a respective server.

6. The method of claim 5 , further comprising determining that subsequent calculations are to be performed exclusively by either the client computer or the server based on the completion information.

7. The method of claim 1 , further comprising receiving, from the server, the document editing application for editing the web-based collaborative spreadsheet, wherein the document editing application has a calculation engine for performing the calculation on the client computer.

8. A non-transitory computer-readable media comprising instructions that, when executed by a processing device of a client computer, cause the processing device to perform operations comprising:

launching, on the client computer, a document editing application associated with a cloud storage system, wherein the document editing application has a client calculation engine for performing spreadsheet calculations on the client computer;

presenting, via the document editing application on the client computer, a web-based collaborative spreadsheet stored on the cloud storage system, wherein the web-based collaborative spreadsheet comprises a plurality of cells, wherein calculations for one or more of the plurality of cells in the web-based collaborative spreadsheet are to be performed by at least one of the client calculation engine on the client computer or a server calculation engine on the cloud storage system;

receiving an input for a first cell of the plurality of cells in the web-based collaborative spreadsheet, wherein the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet causes a calculation that involves at least one or more second cells of the plurality of cells in the web-based collaborative spreadsheet; and

upon receiving the input that causes the calculation involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet:

determining to perform the calculation, caused by the input for the first cell of the plurality of cells and involving at least the one or more second cells of the plurality of cells, by the client calculation engine on the client computer or the server calculation engine of the cloud storage system,

wherein determining to perform the calculation by the client calculation engine or the server calculation engine is based on a network connection between the client computer and the cloud storage system, and one or more factors defining a speed of the calculation, the one or more factors comprising at least one of computing resources available at the client computer and the cloud storage system, or a type of the calculation;

responsive to determining to perform the calculation by the client calculation engine on the client computer,

performing the calculation, caused by the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet and involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet, by the client calculation engine on the client computer,

wherein responsive to determining to perform the calculation by the server calculation engine of the cloud storage system, the input is sent to the cloud storage system to perform the calculation by the server calculation engine of the cloud storage system;

obtaining a first result from the calculation performed by the client calculation engine on the client computer or a second result from the calculation performed by the server calculation engine of the cloud storage system; and

presenting, via the document editing application on the client computer, the obtained first result or second result in the web-based collaborative spreadsheet to a user.

9. The non-transitory computer-readable media of claim 8 , wherein the operations further comprise verifying accuracy of the obtained first result or second result using another result from the first result or second result that is obtained slower than the obtained first result or second result.

10. The non-transitory computer-readable media of claim 9 , wherein verifying the accuracy further comprises determining whether the other result matches the obtained first result or second result.

11. The non-transitory computer-readable media of claim 8 , wherein the operations further comprise sending the input to a plurality of servers of the cloud storage system to perform the calculation on the plurality of servers.

12. The non-transitory computer-readable media of claim 8 , wherein the operations further comprise storing, for a plurality of calculations, completion information of whether a result of each of the plurality of calculations completed quicker by the client computer or a respective server.

13. The non-transitory computer-readable media of claim 12 , wherein the operations further comprise determining that subsequent calculations are to be performed exclusively by either the client computer or the server based on the completion information.

14. The non-transitory computer-readable media of claim 8 , wherein the operations further comprise receiving, from the server, the document editing application for editing the web-based collaborative spreadsheet, wherein the document editing application has a calculation engine for performing the calculation on the client computer.

15. A system comprising:

a memory; and

a processing device, coupled to the memory, to perform operations comprising:

launching, on a client computer, a document editing application associated with a cloud storage system, wherein the document editing application has a client calculation engine for performing spreadsheet calculations on the client computer;

presenting, via the document editing application on the client computer, a web-based collaborative spreadsheet stored on the cloud storage system, wherein the web-based collaborative spreadsheet comprises a plurality of cells, wherein calculations for one or more of the plurality of cells in the web-based collaborative spreadsheet are to be performed by at least one of the client calculation engine on the client computer or a server calculation engine on the cloud storage system;

receiving an input for a first cell of the plurality of cells in the web-based collaborative spreadsheet, wherein the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet causes a calculation that involves at least one or more second cells of the plurality of cells in the web-based collaborative spreadsheet; and

upon receiving the input that causes the calculation involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet:

determining to perform the calculation, caused by the input for the first cell of the plurality of cells and involving at least the one or more second cells of the plurality of cells, by the client calculation engine on the client computer or the server calculation engine of the cloud storage system,

wherein determining to perform the calculation by the client calculation engine or the server calculation engine is based on a network connection between the client computer and the cloud storage system, and one or more factors defining a speed of the calculation, the one or more factors comprising at least one of computing resources available at the client computer and the cloud storage system, or a type of the calculation;

responsive to determining to perform the calculation by the client calculation engine on the client computer,

performing the calculation, caused by the input for the first cell of the plurality of cells in the web-based collaborative spreadsheet and involving at least the one or more second cells of the plurality of cells in the web-based collaborative spreadsheet, by the client calculation engine on the client computer,

wherein responsive to determining to perform the calculation by the server calculation engine of the cloud storage system, the input is sent to the cloud storage system to perform the calculation by the server calculation engine of the cloud storage system;

obtaining a first result from the calculation performed by the client calculation engine on the client computer or a second result from the calculation performed by the server calculation engine of the cloud storage system; and

presenting, via the document editing application on the client computer, the obtained first result or second result in the web-based collaborative spreadsheet to a user.

16. The system of claim 15 , wherein the operations further comprise verifying accuracy of the obtained first result or second result using another result from the first result or the second result that is obtained slower than the obtained first or second result.

17. The system of claim 16 , wherein verifying the accuracy further comprises determining whether the other result matches the obtained first result or second result.

18. The system of claim 15 , wherein the operations further comprise sending the input to a plurality of servers of the cloud storage system to perform the calculation on the plurality of servers.

19. The system of claim 15 , wherein the operations further comprise storing, for a plurality of calculations, completion information of whether a result of each of the plurality of calculations completed quicker by the client computer or a respective server.

20. The system of claim 19 , wherein the operations further comprise determining that subsequent calculations are to be performed exclusively by either the client computer or the server based on the completion information.

Assignments (2)
CHANGE OF NAME Recorded Nov 4, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 050927/0056 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2019
From: GUNDRUM, DANIEL; LLOYD, ZACHARY ERIK; DANZIGER, JOSHUA ARI; KARVE, AMOD
To: GOOGLE INC.
Reel/Frame 050797/0387 →
Continuity (2)
Continuation 15841139 · Dec 13, 2017
Continuation 14135854 · Dec 20, 2013
Cited By (1)
US 12,499,129