The disclosed technology relates to web service methods used in office documents, and in particular to those using REpresentational State Transfer (REST) resources in a web service within a spreadsheet, such as Microsoft Excel, LibreOffice/OpenOffice Calc, and Google Sheets.
Unless otherwise indicated herein, elements described in this section are not prior art to the claims and are not admitted being prior art by inclusion in this section.
In many situations, databases and other information sources are accessed from a cloud-based service, where the database or information service is hosted by a cloud service provider, and users access the data via Internet or another network from a client device. Services are often provided as a REST-compliant service to maximize accessibility. To view and interface with the data, users may use a dedicated database access program, or alternately, an application that is already installed and available on their device, such as a spreadsheet program that may be enhanced with an add-on or extension to provide the required functionality. Programs available include Microsoft Excel, Apache OpenOffice Calc, LibreOffice Calc, and others, which can all be enhanced with add-ons and extensions using languages such as C#, Visual Basic for Applications, OpenOffice BASIC, JavaScript, and Python.
Previous work on this technology (U.S. Pat. No. 11,138,371) concerns the ability to perform bulk create, read, update, and delete (CRUD) operations against REST resources in a web service within a spreadsheet.
Numerous REST resources have support for attachments associated with REST resource items. These attachments, representing some sort of file or media associated with a given record, are often an integral part of a business use case. For example, consider the case where a user must submit an expense report. It is critical to attach copies of receipts to the expense report. Without some form of attachment support, the business user cannot complete filing the expense report from within the spreadsheet application. However, present solutions don't provide the capability to interact with the binary data stored on the server from within the spreadsheet. Attachment metadata includes information like file name and file size. Meaningful interaction with the attachment itself includes uploading new attachment contents and downloading existing attachment contents.
In many situations, databases and other information sources are accessed from a web service, where the database or information service may be hosted by a cloud service provider, and users access the data via Internet or another network from a client device. Services are often provided as a REST-compliant service to maximize accessibility. To view and interface with the data, users may use an application that is already installed and available on their device, such as a spreadsheet program that may be enhanced with an add-on or extension to provide the required functionality. Programs available include Microsoft Excel, Apache OpenOffice Calc, LibreOffice Calc, Google Sheets, and others, which can all be enhanced with add-ons and extensions using languages such as C#, Visual Basic for Applications, OpenOffice BASIC, JavaScript, and Python.
The disclosed technology provides the capability to interact with the binary data stored on the server from within the spreadsheet, using attachment metadata that may include information like file name and file size. Meaningful interaction with the attachment itself includes uploading new attachments and downloading existing attachments.
In a first aspect, an implementation provides a computer-implemented method to interface with a remote attachment from a spreadsheet program on a client device. The method includes the following steps. In a first area of a first worksheet in the spreadsheet program, cells are associated with fields from a top-level object in a web server. Upon receiving a first user interaction, the spreadsheet program communicates with the web server and copies values of the associated cells into fields of the top-level object. In a second area of a worksheet (the first or a second worksheet), one or more cells are associated with one or more fields from a descendant object in the web server. When the user has a second user interaction with the at least a part of the one or more cells, the method responds by showing a user interface item (the second user interface item). The second user interface item waits for a third user interaction, that signals that the user wants to upload an attachment. When the spreadsheet program receives the third user action, it stores client-side attachment metadata, based on the file the user selects to upload, in the one or more cells associated with the one or more fields from the child object. The spreadsheet program uploads the attachment to the web server after the third user interaction, or after a separate user interaction to invoke upload of all queued attachments. The web server receives the attachment, and stores server-side attachment metadata in the descendant object.
The method may further comprise receiving a fourth user interaction in the user interface item, indicating that the user wants to retrieve an attachment that is stored with the web server. The method responds by communicating a download request with at least a part of the first attachment metadata to the web server. It then downloads the attachment from the web server.
Communication between the spreadsheet program and the web server may be REST-compliant.
In a second aspect, an implementation provides a client device that contains software in a memory to execute the method provided in the first aspect above.
In a third aspect, an implementation provides a non-transitory computer-readable medium that contains software in a memory to execute the method provided in the first aspect above.
A further understanding of the nature and the advantages of particular implementations disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
The disclosed technology will be described with reference to the drawings, in which:
In the figures, like reference numbers may indicate functionally similar elements. The systems and methods illustrated in the figures, and described in the Detailed Description below, may be arranged and designed in a wide variety of different implementations. Neither the figures, nor the Detailed Description, are intended to limit the scope as claimed. Instead, they merely represent examples of different implementations of the disclosed technology.
As used herein, the term “and/or” should be interpreted to mean one or more items. For example, the phrase “A, B, and/or C” should be interpreted to mean any of: only A, only B, only C, A and B (but not C), B and C (but not A), A and C (but not B), or all of A, B, and C. As used herein, the phrase “at least one of” should be interpreted to mean one or more items. For example, the phrase “at least one of A, B, and C” or the phrase “at least one of A, B, or C” should be interpreted to mean any of: only A, only B, only C, A and B (but not C), B and C (but not A), A and C (but not B), or all of A, B, and C. As used herein, the phrase “one or more of” should be interpreted to mean one or more items. For example, the phrase “one or more of A, B, and C” or the phrase “one or more of A, B, or C” should be interpreted to mean any of: only A, only B, only C, A and B (but not C), B and C (but not A), A and C (but not B), or all of A, B, and C.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
A “processor” includes any suitable hardware and/or software system, mechanism or component that processes data, signals or other information. A processor can include a system with a general-purpose central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Examples of processing systems can include servers, clients, end user devices, routers, switches, networked storage, etc. A computer may be any processor in communication with a memory. The memory may be any suitable processor-readable storage medium, such as random-access memory (RAM), read-only memory (ROM), magnetic or optical disk, or other tangible media suitable for storing instructions for execution by the processor.
The term “server” and “client” generally refer to separate systems that provide and consume information, respectively. A client may request a server for information, and the server may respond with the requested information. Additionally, a client may provide a server information, which the server may store in, for example, a database, for later use. The terms “client” and “server” are relative, and in some cases the roles may switch. However, the server is often considered to be a larger system serving multiple clients, which may be relatively smaller systems.
REST Web Service—REpresentational State Transfer, an architectural style for communication between computer systems on Internet. REST-compliant systems are often called RESTful systems. Information is available on Internet, for example on www.codecademy.com/articles/what-is-rest.
Attachment—content or media associated with a data object in a web service. Attachments can have arbitrary size. Types of attachments include, but are not limited to, the following: (i) a file (PDFs, image files, etc.); (ii) text content of arbitrary length; and (iii) a web URL.
Metadata—data that defines or provides information about other data. In the context of the current patent document, metadata may, for example, be used to describe the structure of data objects, templates, and services. In the context of this document, Attachment Metadata means the information describing an attachment, for example information including the file name, description, file type, and file size.
Transitory Memory—a memory whose data content must be considered signals, i.e. of temporary nature and disappearing when the memory's power supply is removed. Transitory memory includes memories like static random-access memory (SRAM) and dynamic random-access memory (DRAM).
Non-transitory Memory—a memory whose data content can be arbitrarily long and is independent of the availability of the memory's supply power. Non-transitory memory includes non-volatile memories like read-only memory (ROM), flash memory, magnetic random-access memory (MRAM), magnetic disks, optical disks including compact disks (CDs), digital video disks (DVDs), and Blu-ray disks.
URI—Uniform Resource Identifier.
URL—Uniform Resource Locator.
Spreadsheet application 140 may be any spreadsheet application or other software application operable to display a table view, i.e., a visualization providing cells arranged in rows and columns. A spreadsheet may include one or more worksheets, collectively forming a workbook. A user interface such as UI/GUI 150 may display a worksheet in a table view visualization.
Cells can also interact with users. For example, a cell can respond to a user clicking, double-clicking, editing, hovering over, selecting, deselecting, entering, exiting, and other events. A spreadsheet program API may make such events available to macros that can be stored in the workbook or in a template workbook, and that can provide custom functionality to a spreadsheet document, or to all of a spreadsheet user's documents.
Consider the case of creating an expense report and filing it online. It is convenient to create an expense report from a template file in a spreadsheet program on a user device. In some cases, an expense report must be accompanied with one or more receipts that show details of the expenses. The receipts are typically file-based attachments, such as scans, PDFs, emails, web pages, or texts, associated with the expense report. In a server-client model, such as shown in
In the context of a spreadsheet, top-level object 310 may be associated with a first area in a first worksheet in a spreadsheet workbook, where the first area lists information such as the expense report date, submitter, department, its list of approvers, the total amount, and the status of the expense report (pending, approved, rejected, returned for modification, etc.). In some implementations, the first area may be spread over multiple worksheets.
A child object may be related to a second area in a second worksheet. The second worksheet may be the same as or different than the first worksheet. The second area may include, for example, a table row related to a child object. It may include cells for the country in which an expense occurred, the currency of the expense, the exchange rate, amount, type of expense (transportation, lodging, food, communication, entertainment, other business expenses), the vendor, method of payment (cash, private credit card, company credit card), etc. The row may further hold cells that can provide a user interface to attachments, such as scans of receipts, other binary files, emails, text files, text, etc. In implementations, a cell would not include the attachment itself. Rather, the cell may include attachment metadata from an associated attachment metadata object, part or all of which may be visible or hidden to the user. The attachment metadata may include information like the attachment type, filename, file size, URI or URL, etc., allowing an implementation to interface with the attachment.
Whereas the example implementation of
The hierarchy of objects in the data model is arbitrary. An attachment object may be a child, grandchild, great-grandchild, etc. of the top-level object. In another example hierarchy implementation, the top-level object may be an expense report (“ExpenseReport”), a child of ExpenseReport may be an expense (“Expense”), and a child of Expense and grandchild of ExpenseReport may be an expense attachment (“ExpenseAttachment”) associated with the individual expense. Another child of ExpenseReport, and sibling of Expenses, may be an attachment associated with an expense report (“ExpenseReportAttachment”). In yet another implementation, such as a web service whose function is to share files, an attachment may be a top-level object.
An upload via a REST web service may include two steps. For example, in a first step, the client device may send a JSON message to the service as follows:
and in a second step, the client device may send a message with a Request body including the binary data.
An upload via a REST web service may also be performed in a single step, for example as follows:
By combining the intuitive ease of using a spreadsheet for an expense report, the capabilities of a REST webservice, and the data model, an implementation allows for convenient interaction between the user having a client device and the web service that handles the information collection and processing needs in an organization that the user is linked to, for example an enterprise of which the user is an employee.
The implementations in
Step 810—in a first area of a first worksheet on a client device, associating cells with fields from the top-level object. The client device may run a spreadsheet program that shows a spreadsheet including the first worksheet. The first area may include top-level information, for example different cells in the first area may include information that matches different fields in the top-level object.
Step 820—waiting for and receiving a first user interaction to copy values of the associated cells into fields in the top-level object. In some implementations, the first user interaction may be the simple fact of modifying a cell in the first area. In other implementations, the first user interaction may be giving a command (e.g., by pressing a button) to upload changes in the first worksheet to the web server.
Step 830—in response to receiving the first user interaction, communicating contents of the associated fields to the web server to change the fields in the top-level object.
Step 840—associating one or more cells in a second area of a second worksheet on the client device with one or more fields in a descendant object, and associating at least part of the one or more cells with a second user interface item. The second worksheet may be the first worksheet or a different worksheet.
Step 850—waiting for and receiving a second user interaction in the at least part of the one or more cells associated with the second user interface item.
Step 860—in response to receiving the second user interaction, showing the second user interface item, and waiting for receiving a third user interaction, that signals that the user wants to upload an attachment and associate the attachment with the child object. The attachment may be or include a binary file, a text, a text file, an email, a web page, a document in a remote or separate repository/document management system (represented in the attachment metadata by a URL or URI), or any other file that holds data relevant to the needs of an organization.
Step 870—in response to receiving the third user interaction, storing client-side attachment metadata in the second area and uploading the attachment to the web server. Client-side metadata may overlap server-side metadata, but may also include information that is not relevant for the web service, such as the path where the client device locally stores the attachment. Server-side metadata may include information that is not relevant for the client device, or that the user is not privileged to receive, such as the location where the web service stores the attachment. An implementation may upload the attachment immediately upon receiving the third user interaction, or may require a further user interaction that invokes uploading of one or more queued attachments.
Step 880—receiving the attachment in the web server, and storing server-side attachment metadata in the child object. The web server determines a location where it will store the received attachment, stores the received attachment, and includes the location in the second attachment metadata.
Step 865—in the second user interface item, waiting for and receiving a fourth user interaction, that signals that the user wants to retrieve the attachment from the web server and download it to the client device.
Step 875—in response to receiving the fourth user interaction, communicating a download request with at least a part of the first metadata to the web server.
Step 885—downloading the attachment from the web server.
In one exemplary implementation, computer system 1000 includes a client device 1010, which may be coupled with or include a display device 1020 such as a monitor, a data entry device 1030 such as a keyboard, a touch device, and the like, a user input device 1040, such as a mouse, a trackball, a track pad, wireless remote, tablet, touch screen, and the like. User input device 1040 typically allows a user to select and operate objects, icons, text, characters, and the like that appear, for example, on display device 1020.
Client device 1010 typically includes familiar computer components such as a processor 1012, a short-term memory 1014, e.g., a RAM, long-term memory 1016, e.g. a hard-disk drive, solid-state drive, or optical storage media such as a DVD drive, network interface 1018, and system bus 1090 interconnecting the above components. In one implementation, client device 1010 is a personal computer having multiple microprocessors, GPUs, and the like. In another implementation, client device 1010 is a server that may be operating stand-alone or in an arrangement with multiple other servers.
Network interface 1018 may include an Ethernet card (or module or integrated circuit), a modem (telephone, satellite, cable, ISDN), a DSL unit (synchronous or asynchronous), and the like. Further, network interface 1018 may be physically integrated on the motherboard of client device 1010, or may be a software program, such as soft DSL, or the like.
While
Computer system 1000 may also include software that enables communication over communication network 1050 such as using HTTP, TCP/IP, RTP/RTSP, WAP, IEEE 802.11, and other protocols. In addition to and/or alternatively, other communication software and transfer protocols may also be used, for example FTP, IPX, UDP or the like. Communication network 1050 may include Internet, a wide area network, a local area network, a wireless network, an intranet, a switched network, or any other suitable public or private communication network, such as for example cloud networks. Communication network 1050 may include many interconnected computer systems and any suitable communication links such as hardwire links, optical links, satellite or other wireless communications links such as Bluetooth, WiFi, wave propagation links, or any other suitable mechanisms for communication of information. Communication network 1050 may be operable for communicating with web service provider 1070. Communication network 1050 may further enable communication with a remote mobile device 1080 such as a mobile phone or a tablet, via wireless transceiver 1060, which may be, or include, a base station or a WiFi router.
Although the description has been described with respect to particular implementations thereof, these particular implementations are merely illustrative, and not restrictive. For example, although several examples in this document highlight using the technology for a business expense report, the technology may be applied to any other use of a spreadsheet that interacts with a web service, and that has a need to upload, download, or otherwise work with attachments.
All features disclosed in the specification, including the claims, abstract, and drawings, and all the steps in any method or process disclosed, may be combined in any combination, except combinations where at least some of such features and/or steps are mutually exclusive. Each feature disclosed in the specification, including the claims, abstract, and drawings, can be replaced by alternative features serving the same, equivalent, or similar purpose, unless expressly stated otherwise.
Any suitable programming language can be used to implement the routines of particular implementations including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular implementations. In some particular implementations, multiple steps shown as sequential in this specification can be performed at the same time.
Particular implementations may be implemented in a tangible, non-transitory computer-readable information storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular implementations can be in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular implementations. For example, a tangible, non-transitory computer-readable information storage medium such as a hardware storage device can be used to store the control logic, which can include executable instructions.
Particular implementations may be implemented by using a programmed general-purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nano-engineered systems, components and mechanisms may be used. In general, the functions of particular implementations can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine-readable medium to permit a computer to perform any of the methods described above.
Thus, while particular implementations have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular implementations will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit.
This application is a continuation of the following application, U.S. patent application Ser. No. 17/528,950, entitled METHOD AND SYSTEM FOR CREATING, RETRIEVING, AND EDITING WEB SERVICE ATTACHMENTS IN SPREADSHEETS, filed on Nov. 17, 2021, which is hereby incorporated by reference as if set forth in full in this application for all purposes. This application is related to the following applications: U.S. Pat. No. 11,138,371, entitled EDITABLE TABLE IN A SPREADSHEET INTEGRATED WITH A WEB SERVICE, issued on Oct. 5, 2021; and U.S. patent application Ser. No. 17/008,503, entitled ORCHESTRATION OF CRUD OPERATIONS FOR A HIERARCHICAL WEB SERVICE DATA MODEL IN A SPREADSHEET, filed on Aug. 31, 2020; which are hereby incorporated by reference as if set forth in full in this application for all purposes. Each publication, patent, and/or patent application mentioned in this specification is herein incorporated by reference in its entirety to the same extent as if each individual publication and/or patent application was specifically and individually indicated to be incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
7613691 | Finch | Nov 2009 | B2 |
7685152 | Chivukula | Mar 2010 | B2 |
8307119 | Rochelle | Nov 2012 | B2 |
8447886 | Rochelle | May 2013 | B2 |
8578289 | Lai | Nov 2013 | B2 |
8892679 | Destagnol | Nov 2014 | B1 |
9330080 | Muenkel | May 2016 | B2 |
9342497 | Waite | May 2016 | B1 |
9501463 | Khen | Nov 2016 | B1 |
10044773 | Destagnol | Aug 2018 | B2 |
10437923 | Silk | Oct 2019 | B2 |
10466867 | Boucher | Nov 2019 | B2 |
10466868 | Boucher | Nov 2019 | B2 |
10489018 | Boucher | Nov 2019 | B2 |
10656801 | Goodman | May 2020 | B1 |
10789414 | Schoedl | Sep 2020 | B2 |
10866935 | Chung | Dec 2020 | B2 |
10983670 | Boucher | Apr 2021 | B2 |
11080476 | Davis | Aug 2021 | B2 |
11138371 | Davis | Oct 2021 | B2 |
11210459 | Krishnaswamy | Dec 2021 | B1 |
11243824 | Meersma | Feb 2022 | B1 |
11308269 | Rodgers | Apr 2022 | B1 |
11354493 | Von Tish | Jun 2022 | B2 |
11438286 | Massand | Sep 2022 | B2 |
11443109 | Davis | Sep 2022 | B2 |
11443110 | Davis | Sep 2022 | B2 |
20050166161 | Makela | Jul 2005 | A1 |
20070136666 | Khen | Jun 2007 | A1 |
20070162504 | Chivukula | Jul 2007 | A1 |
20070233811 | Rochelle | Oct 2007 | A1 |
20070299870 | Finch | Dec 2007 | A1 |
20110185305 | Lai | Jul 2011 | A1 |
20120330995 | Muenkel | Dec 2012 | A1 |
20130007118 | Rochelle | Jan 2013 | A1 |
20130110983 | Song | May 2013 | A1 |
20130254644 | Rochelle | Sep 2013 | A1 |
20140059413 | Lai | Feb 2014 | A1 |
20140136936 | Patel | May 2014 | A1 |
20140136937 | Patel | May 2014 | A1 |
20150082198 | Destagnol | Mar 2015 | A1 |
20170315968 | Boucher | Nov 2017 | A1 |
20170315978 | Boucher | Nov 2017 | A1 |
20170315979 | Boucher | Nov 2017 | A1 |
20180013703 | Massand | Jan 2018 | A1 |
20190057111 | Chung | Feb 2019 | A1 |
20190095413 | Davis | Mar 2019 | A1 |
20190095414 | Davis | Mar 2019 | A1 |
20190138587 | Silk | May 2019 | A1 |
20190213243 | Silk | Jul 2019 | A1 |
20190340219 | Schoedl | Nov 2019 | A1 |
20200097534 | Von Tish | Mar 2020 | A1 |
20200125713 | Davis | Apr 2020 | A1 |
20200202066 | Bodera | Jun 2020 | A1 |
20200252358 | Mutha | Aug 2020 | A1 |
20210326520 | Davis | Oct 2021 | A1 |
20210357582 | Davis | Nov 2021 | A1 |
Number | Date | Country |
---|---|---|
111078331 | Apr 2020 | CN |
WO-2014074964 | May 2014 | WO |
Number | Date | Country | |
---|---|---|---|
20230214578 A1 | Jul 2023 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17528950 | Nov 2021 | US |
Child | 18120268 | US |