INTERFACING WITH WEB SERVICE ATTACHMENTS IN SPREADSHEETS
20230214578 · 2023-07-06
Assignee
Inventors
Cpc classification
G06F3/0484
PHYSICS
G06F3/0481
PHYSICS
International classification
G06F3/0484
PHYSICS
G06F3/0481
PHYSICS
Abstract
A computer-implemented method interfaces with a remote attachment from a spreadsheet program on a client device. A first area in the spreadsheet associates with a top-level object in a web server, and a second area associates with a descendant object. On a first user interaction with a cell in the second area, a user interface item is shown, allowing uploading and/or downloading the attachment. When the user interacts to upload or download, the program uploads (or queues for upload) a selected attachment and modifies attachment metadata in the second area, or downloads the attachment based on attachment metadata in the second area. Communication between the spreadsheet program and the web server may be REST compliant.
Claims
1. A computer-implemented method to interface with remote attachments, comprising: providing by a web server, a hierarchy of objects in a data model of a spreadsheet; in the spreadsheet on a client device, associating one or more cells with one or more fields in an object of the hierarchy of objects; associating at least part of the one or more cells with a first user interface item that includes a context popup having one or more widgets for upload and/or download of an attachment that includes one of a file, an email, a web page, or a document; in response to receiving a first user interaction, showing the first user interface item; in response to receiving a second user interaction in the first user interface item to upload the attachment, storing client-side attachment metadata that enables interfacing with the attachment, in at least one attachment cell of the one or more cells, wherein the at least one attachment cell excludes the attachment, and wherein the context popup displays at least a part of the client-side attachment metadata; and receiving the attachment by the web server; and storing server-side attachment metadata for the attachment in an object of the hierarchy of objects.
2. The computer-implemented method of claim 1, wherein the attachment is represented by a set of the client-side attachment metadata and/or the server-side attachment metadata.
3. The computer-implemented method of claim 2, wherein the client device controls the client-side attachment metadata in the spreadsheet and/or the server-side attachment metadata to impart control of the attachment.
4. The computer-implemented method of claim 1, wherein the client device is denied access to at least part of the server-side attachment metadata.
5. The computer-implemented method of claim 1, wherein the one or more widgets are selected from a group widgets including: a menu, an icon, a button, checkbox, and a radio button.
6. The computer-implemented method of claim 1, wherein the context popup further includes one or more additional widgets for actions selected from an action group including: editing a link to the attachment, editing a location of the attachment, editing a type of the attachment, browsing to another location for the attachment, removing the attachment, renaming the attachment, or deleting the attachment.
7. The computer-implemented method of claim 1, further comprising: downloading the attachment to store a local copy on the client device; and displaying information regarding a location of the downloaded attachment in the spreadsheet.
8. The computer-implemented method of claim 1, wherein the attachment includes changes from a previously downloaded attachment from the web server, and wherein the widget for upload is enabled to upload the changes to the attachment.
9. A client device comprising: one or more processors; and logic encoded in one or more tangible non-transitory media for execution by the one or more processors and when executed operable for: in a spreadsheet on a client device, associating one or more cells with one or more fields in an object of a hierarchy of objects in a data model of the spreadsheet provided by a web server; associating at least part of the one or more cells with a first user interface item that includes a context popup having one or more widgets for upload and/or download of an attachment that includes one of a file, an email, a web page, or a document; in response to receiving a first user interaction, showing the first user interface item; in response to receiving a second user interaction in the first user interface item to upload the attachment, storing client-side attachment metadata that enables interfacing with the attachment, in at least one attachment cell of the one or more cells, wherein the at least one attachment cell excludes the attachment, and wherein the context popup displays at least a part of the client-side attachment metadata; and providing the attachment to the web server to facilitate the web server to store server-side attachment metadata in an object of the hierarchy of objects.
10. The client device of claim 9, wherein the logic is further operable for: controlling the client-side attachment metadata in the spreadsheet and/or the server-side attachment metadata to impart control of the attachment.
11. The client device of claim 9, wherein the client device is denied access to at least part of the server-side attachment metadata.
12. The client device of claim 9, wherein the context popup further includes one or more additional widgets for actions selected from an action group including: editing a link to the attachment, editing a location of the attachment, editing a type of the attachment, browsing to another location for the attachment, removing the attachment, renaming the attachment, or deleting the attachment.
13. The client device of claim 9, wherein the logic is further operable for: downloading the attachment to store a local copy; and displaying information regarding a location of the downloaded attachment in the spreadsheet.
14. The client device of claim 9, wherein the attachment includes changes from a previously downloaded attachment from the web server, and wherein the widget for upload is enabled to upload the changes to the attachment.
15. A non-transitory computer-readable medium including one or more instructions executable by one or more processors for: in a spreadsheet on a client device, associating one or more cells with one or more fields in an object of a hierarchy of objects in a data model of the spreadsheet provided by a web server; associating at least part of the one or more cells with a first user interface item that includes a context popup having one or more widgets for upload and/or download of an attachment that includes one of a file, an email, a web page, or a document; in response to receiving a first user interaction, showing the first user interface item; in response to receiving a second user interaction in the first user interface item to upload the attachment, storing client-side attachment metadata that enables interfacing with the attachment, in at least one attachment cell of the one or more cells, wherein the at least one attachment cell excludes the attachment, and wherein the context popup displays at least a part of the client-side attachment metadata; and providing the attachment to the web server to facilitate the web server to store server-side attachment metadata in an object of the hierarchy of objects.
16. The non-transitory computer-readable medium of claim 15, wherein the one or more instructions are further executable for: controlling the client-side attachment metadata in the spreadsheet and/or the server-side attachment metadata to impart control of the attachment.
17. The non-transitory computer-readable medium of claim 15, wherein the client device is denied access to at least part of the server-side attachment metadata.
18. The non-transitory computer-readable medium of claim 15, wherein the context popup further includes one or more additional widgets for actions selected from an action group including: editing a link to the attachment, editing a location of the attachment, editing a type of the attachment, browsing to another location for the attachment, removing the attachment, renaming the attachment, or deleting the attachment.
19. The non-transitory computer-readable medium of claim 15, wherein the one or more instructions are further executable for: downloading the attachment to store a local copy; and displaying information regarding a location of the downloaded attachment in the spreadsheet.
20. The non-transitory computer-readable medium of claim 15, wherein the attachment includes changes from a previously downloaded attachment from the web server, and wherein the widget for upload is enabled to upload the changes to the attachment.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0021] The disclosed technology will be described with reference to the drawings, in which:
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032] 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.
DETAILED DESCRIPTION
Terminology
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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.
[0037] 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.
[0038] 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.
[0039] 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.
[0040] 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).
[0041] 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.
[0042] URI—Uniform Resource Identifier.
[0043] URL—Uniform Resource Locator.
Introduction
[0044]
[0045] 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.
[0046]
[0047] 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.
A Use Case
[0048] 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, interacts with a spreadsheet on a client device. The client device communicates with a server that organizes its data in some data model. A web service, such as a REST web service, transfers the data between the spreadsheet and one or more data objects that follow the data model. The web service stores the data objects in a non-transitory data storage device that may be onsite with the web server, whereas the client device may store the spreadsheet file and attachments in its own non-transitory memory.
[0049]
[0050] 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.
[0051] 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.
[0052] Whereas the example implementation of
[0053] 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.
[0054]
Implementations
[0055]
[0056]
[0057] 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:
TABLE-US-00001 Request body: { “DatatypeCode”: “FILE”, “FileName”: “airfare.pdf”, “Url”: “null”, “Title”: “Airfare”, “Description”: “Roundtrip SFO - CDG November 2021” }
and in a second step, the client device may send a message with a Request body including the binary data.
[0058] An upload via a REST web service may also be performed in a single step, for example as follows:
TABLE-US-00002 Request body: { “DatatypeCode”: “FILE”, “FileName”: “airfare.pdf”, “Url”: “null”, “Title”: “Airfare”, “Description”: “Roundtrip SFO - CDG November 2021” “Contents”: [a Base64 encoded string representing the attachment data] }
[0059] 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.
[0060]
[0061] The implementations in
[0062]
[0063] 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.
[0064] 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.
[0065] 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.
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071]
[0072] 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.
[0073] 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.
[0074] Step 885—downloading the attachment from the web server.
[0075]
[0076]
[0077] 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.
[0078] 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.
[0079] 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.
[0080] While
[0081] 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.
CONSIDERATIONS
[0082] 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.
[0083] 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.
[0084] 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.
[0085] 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.
[0086] 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.
[0087] 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.
[0088] 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.