US20140136936A1 - Spreadsheet functions to call rest api sources - Google Patents
Spreadsheet functions to call rest api sources Download PDFInfo
- Publication number
- US20140136936A1 US20140136936A1 US13/672,704 US201213672704A US2014136936A1 US 20140136936 A1 US20140136936 A1 US 20140136936A1 US 201213672704 A US201213672704 A US 201213672704A US 2014136936 A1 US2014136936 A1 US 2014136936A1
- Authority
- US
- United States
- Prior art keywords
- spreadsheet
- url
- medium
- data
- web
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Definitions
- Spreadsheet software applications are graphical presentations and tools for organizing and manipulating data.
- a spreadsheet application enables a user to apply formulas and functions to data entered into rows and columns of cells in a grid. Each cell can hold a piece of data and can be referenced using a column value (such as a letter) and a row value (such as a number) of where the cell is located.
- a spreadsheet is a rectangular table or grid of information designed to perform general computations tasks using relationships between cells in the grid. Calculations, graphing tools, and filtering can be carried out on the data (or other content) in the cells and the results displayed. Online and mobile functionality have been incorporated into spreadsheet software applications to provide users with portability and additional access.
- Spreadsheet functions are provided that enable interactivity with web services and manipulation of data retrieved from a web service call.
- WEBSERVICE(url) is used to make an asynchronous web service call, allowing the spreadsheet calculations to continue processing while the request is being processed. Once processed, the result is returned to the spreadsheet application.
- the spreadsheet application employs a caching mechanism to cache any previous calls for a short duration to improve performance. Additionally, only a certain number of web requests may be allowed at any given time. However, this limit does not necessarily apply to the number of WEBSERVICE(url) calls in a spreadsheet.
- FILTERXML(xml, xpath) takes in an arbitrary valid XML string and uses the XPath notation standard to query and return values from the XML. It can be used with any web services that return data in any XML format and any string in XML format. This function can return one or more values. If multiple values are returned the function can be array entered into the spreadsheet application. Otherwise, existing indexing functions such as INDEX can be used to index into the data.
- the filtering function allows a user to filter on XML strings based on the xpath argument.
- the xpath argument can be a standard XPath string, which can be used to return the result(s) from the XML, and is evaluated synchronously.
- ENCODEURL(text) encodes specified text and is evaluated synchronously. This function allows the user to use references to other cells allowing the proper encoding to be used as input to the URL parameter in WEBSERVICE function
- VBA visual basic for applications
- C API C API
- FIG. 1 is a system diagram illustrating an illustrative operating environment for various embodiments disclosed herein
- FIG. 2 shows an example system on which certain embodiments of the invention may be carried out.
- FIGS. 3A and 3B illustrate examples involving a representative spreadsheet in which web functions of certain embodiments of the invention are used.
- FIG. 4A shows an example spreadsheet for illustrating an application of web functions in accordance with certain embodiments of the invention.
- FIGS. 4B and 4C show a process flow for applying web functions in accordance with certain embodiments of the invention.
- FIGS. 5A and 5B show an example spreadsheet for illustrating where an output of a web function of an embodiment of the invention is an array.
- FIGS. 6A-6C show a process flow utilizing three web functions in accordance with an embodiment of the invention.
- FIG. 7 shows an example spreadsheet for illustrating an application of the three web functions in accordance with an embodiment of the invention.
- FIG. 8 shows a diagram of a calculation process in accordance with an embodiment of the invention.
- FIG. 9 shows a block diagram illustrating components of a computing device used in some embodiments.
- Spreadsheet functions are provided that enable interactivity with web services and manipulation of data retrieved from a web service call.
- a function performs a calculation and returns a value.
- a variety of content can be returned from a source to the spreadsheet application.
- a function is provided that can be used as part of a spreadsheet model, enabling encoding of parameters to the REST call.
- Embodiments facilitate the retrieval of live web data from a publicly available web service without a user having to create custom code.
- REST end points can be queried using the HTTP protocol through a built-in asynchronous worksheet function, reducing the need for customer developer code.
- various embodiments of the invention provide this functionality without placing a cap on the number of calls to the publicly available web services that can be made in one workbook of a spreadsheet application.
- Certain embodiments of the invention include security related aspects which inhibit the Web functions of various embodiments of the invention from causing denial of service (DoS) attacks by the spreadsheet application while not placing a strict limit on the number of calls that can be made in a spreadsheet. For example, while only a certain number of web requests may be allowed at any given time, this limit does not necessarily apply to the number of WEBSERVICE(url) calls in a spreadsheet.
- DoS denial of service
- the control of the number of web service requests can be accomplished through caching and throttling.
- caching when a web service call is performed via the WEBSERVICE(url) function, the response may be stored locally in a cache for a period of time.
- a WEBSERVICE call to a Wikipedia API a first call may successfully return a response. At this time, a value is provided in a corresponding cell (and stored in a cache locally). If, within a predetermined time period (for example, 2-60 seconds), another WEBSERVICE(url) call is made to the same URL, it is conceivable—and in this case expected—that a same result would be returned again. For this type of situation, WEBSERVICE does not make a web request and instead accesses the cache and returns the cached value.
- the number of active HTTP calls that can be made at a given time is limited. For example, an unbounded number of WEBSERVICE calls may be allowed in the spreadsheet, but only a certain number of HTTP requests are made active at a given time. This is similar to the traffic lights on freeway on-ramps during rush hour; a certain number of cars are allowed to pass in a certain time, but eventually each car waiting to enter the freeway will get through.
- a workbook is a spreadsheet file that generally contains at least one worksheet.
- the worksheets in a workbook each present a grid of cells that can reference cells in a same worksheet or in another worksheet of the workbook.
- spreadsheet applications include MICROSOFT EXCEL, which may be proved as a standalone application or as part of an application suite such as MICROSOFT OFFICE or MICROSOFT WEB APPS and OFFICE365, trademarks and registered trademarks of Microsoft Corp., the spreadsheets of the GOOGLE DOCS program, a trademark of Google Inc., and APPLE NUMBERS, a registered trademark of Apple Inc.
- FIG. 1 shows an operating environment in accordance with an embodiment of the invention.
- a client 110 and a server 120 communicate via a network 130 .
- a web service 140 may be implemented between client 110 and server 120 as well as between client 110 and one or more other servers (for example, search engine server 145 ) or between server 120 and one or more other servers (for example, search engine server 145 ).
- Communication between computing devices in a client-server relationship may be initiated by a client sending a request to the server asking for access to a particular resource or for particular work to be performed.
- the server may subsequently perform the actions requested and send a response back to the client.
- An application programming interface may be incorporated to provide a software-to-software interface that enables applications to communicate over the network 130 .
- An API is generally a set of programming instructions and standards for enabling two or more applications to communicate with each other and is commonly implemented as a set of Hypertext Transfer Protocol (HTTP) request messages and a specified format or structure for response messages.
- the messages can contain an information resource.
- a resource is information that can be identified by a uniform resource identifier (URI) and may be a file, a dynamically-generated query result, the output of a common gateway interface (CGI) script, a document that is available in several languages, and the like.
- URI uniform resource identifier
- CGI common gateway interface
- XML Extensible Markup Language
- JSON JavaScript Object Notation
- a web service is a software system that supports interoperable machine-to-machine interaction over a network and enables software to connect to other software applications.
- a web service provides a collection of technological standards and protocols.
- the web service provides functions that may be implemented by a software or hardware agent that sends and receives messages (e.g., the computing platforms requesting and providing a particular service).
- Web Services are readily available sources of information across the web today.
- Major web sites offer Representational state transfer (REST) compliant web services as part of their public API offerings.
- REST Representational state transfer
- REST refers to a web architecture that governs the behavior between clients and servers of a distributed system such as the Web.
- a RESTful web service presents a uniform interface between clients and servers and may be implemented using, for example, HTTP, XML, and JSON. Instead of requiring a well-defined message to a particular resource, REST may simply request a specific resource.
- web service 140 and network 130 are illustrated as separate entities in FIG. 1 , it should be understood that the distinction is merely to emphasize the web service application.
- the web service may be implemented using one or more physical and/or virtual servers communicating over network 130 .
- Applications running on client 110 and server 120 can access web services via ubiquitous Web protocols and data formats such as HTTP, XML, JSON and SOAP.
- the network 130 may be an internet, an intranet, or an extranet, and can be any suitable communications network including, but not limited to, a cellular (e.g., wireless phone) network, the Internet, a local area network (LAN), a wide area network (WAN), a WiFi network, an ad-hoc network, or a combination thereof.
- a cellular (e.g., wireless phone) network the Internet
- LAN local area network
- WAN wide area network
- WiFi network ad-hoc network
- Such networks may involve connections of network elements, such as hubs, bridges, routers, switches, servers, and gateways.
- the network 130 may include one or more connected networks (e.g., a multi-network environment) including public networks, such as the Internet, and/or private networks such as a secure enterprise private network. Access to the network 130 may be provided via one or more wired or wireless access networks (not shown), as will be understood by those skilled in the art. As will also be appreciated by those skilled in the art, communication networks can take several different forms and can use several different communication protocols.
- connected networks e.g., a multi-network environment
- public networks such as the Internet
- private networks such as a secure enterprise private network.
- Access to the network 130 may be provided via one or more wired or wireless access networks (not shown), as will be understood by those skilled in the art.
- wired or wireless access networks not shown
- communication networks can take several different forms and can use several different communication protocols.
- the client 110 and the server 120 can involve computing systems configured with one or more central processing units (CPUs), memory, mass storage, and I/O devices (e.g., network interface, user input device). Elements of the computing system can communicate with each other via a bus.
- the hardware platform of computing systems can be embodied in many forms, including, but not limited to, a personal computer, a server computer, a hand-held or laptop device, a multiprocessor system, a microprocessor-based system, programmable consumer electronics, and a distributed computing environment that includes any of the above systems or devices.
- the client 110 can be embodied as a computing device including, but not limited to, a personal computer, a tablet, a mobile device, a personal digital assistant (PDA), a smartphone, a laptop (or notebook or netbook) computer, a gaming device or console, a desktop computer, or a smart television.
- a computing device including, but not limited to, a personal computer, a tablet, a mobile device, a personal digital assistant (PDA), a smartphone, a laptop (or notebook or netbook) computer, a gaming device or console, a desktop computer, or a smart television.
- PDA personal digital assistant
- the server 120 can be embodied as a computing device including, but not limited to, a server computer, an enterprise computer, a personal computer, a multiprocessor system, a microprocessor-based system, and a combination thereof. It should be understood that the listing of client computing devices and the server computing devices is not intended to be limiting and that the client and server may be embodied in the same or different form.
- the client computing device 110 is configured to execute an operating system 111 and one or more application programs such as, in the illustrated embodiment, a spreadsheet application 112 , a web browser application 113 , and/or one or more other applications.
- application programs such as, in the illustrated embodiment, a spreadsheet application 112 , a web browser application 113 , and/or one or more other applications.
- the operating system 111 is a computer program for controlling the operation of the client computing device 110 .
- the application programs are executable programs configured to execute on top of the operating system 111 to provide various functionality such as described herein.
- the spreadsheet application 112 is an application program configured to receive and display data in cells in a simulated worksheet of rows and columns. One or more formulas can be applied to all or a portion of the data to perform calculations, filtering, and other analysis. The data can alternatively or additionally be used as the basis for creating tables, charts, sparklines (a simplified line chart), and other visualizations.
- the web browser application 113 is an application program for retrieving and traversing information resources on the World Wide Web (“the Web”), as well as resources provided by web servers in private networks via the network 130 , and presenting the information resources to a user (e.g., rendering for display). Moreover, the web browser application 113 allows a user to access information and various functions provided by a server.
- the Web World Wide Web
- the web browser application 113 allows a user to access information and various functions provided by a server.
- the illustrated server computer 120 is configured to execute a server operating system 121 , one or more application programs such as a server spreadsheet application 122 , and/or one or more other applications.
- the server operating system 121 is a computer program for controlling the operation of the server computing device 120 , and the application programs are executable programs configured to execute on top of the server operating system 121 to provide various functionality described herein.
- the server spreadsheet application 122 in some embodiments, is a web-based application program configured to receive and display data in cells in a spreadsheet document such as a worksheet.
- the server computer 120 is configured to execute the server spreadsheet application 122 and the client computing device 110 is configured to access the server computer 120 to interact with the server spreadsheet application 122 in a client/server configuration.
- the server spreadsheet application 122 may provide functionality that is identical to the spreadsheet application 112 .
- the client web browser application 113 is used to connect with a server, for example, server computing device 120 , in order to access a web-based spreadsheet application 122 .
- multiple client computing devices, multiple networks, and/or multiple servers may be included as part of the operating environment.
- Embodiments facilitate the use of web content in spreadsheet applications through the use of functions that get web content and convert the web content into usable data. Instead of requiring custom coding for a user to get live web data from a publicly available web service, embodiments provide web service functions from within a spreadsheet application. This enables a user to bring live web data into the spreadsheet application where the data can be manipulated and displayed using the tools available within the spreadsheet application.
- VBA visual basic for applications
- VBA is a software tool for creating macros, procedures and custom functions that may be used in spreadsheet applications such as MICROSOFT EXCEL.
- Certain spreadsheet applications support user functions created in VBA.
- crafting custom VBA functions may be time-consuming and non-trivial.
- Embodiments of the invention can enable a developer to skip the programming steps and use a function within the spreadsheet program.
- users may also utilize a C API (a C or C++ programming interface).
- VBA virtualized Automatic Dial Adaptive Binary Arithmetic
- a VBA macro may be created that uses WEBSERVICE programmatically to get weather data from a Web service, processes the data, and inserts the results in the spreadsheet.
- FIG. 2 shows an example system on which certain embodiments of the invention may be carried out.
- a client computing device such as a tablet 200 can display a spreadsheet application 210 that may be a spreadsheet application running on the device 200 or a spreadsheet application running on a server and accessed through a web browser application running on the device 200 .
- a user may access a web function 220 from a menu, drop-down box, or ribbon.
- the computing device 200 can include components as described with respect to FIG. 9 .
- the web function 220 can include functions that bring data from REST API sources as well as functions that filter the data received from the REST API sources and encode data for use in calling REST API sources.
- functions that bring data from REST API sources as well as functions that filter the data received from the REST API sources and encode data for use in calling REST API sources.
- embodiments are not limited to interactions with REST API sources, and data received through any suitable source (including user manual input) may be filtered and encoded using web functions described herein.
- the function makes an asynchronous web service call, allowing the spreadsheet calculations to continue processing while the request is being processed. Once processed, the result is returned to the spreadsheet application where the application can finish calculation of any formulas that depend on the web service function.
- the spreadsheet application employs a caching mechanism to cache any previous calls for a short duration to improve performance.
- the function asynchronously calls the web service located at the URL by using an HTTP GET request and returns the response.
- the GET request retrieves the information identified by the request URI—the URL in this embodiment. If the request URI refers to a data-producing process, it is the produced data that is returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.
- the function encodes the argument text into a form that is appropriate for a site to which a web service request may be made.
- IETF Internet Engineering Task Force
- embodiments are not limited thereto and the prepending and/or insertion of certain characters may be omitted.
- a web function FILTERXML(xml,xpath) (or alternatively, a hypertext markup language (HTML) or JSON filter) is provided that gets specific data from an XML string in the spreadsheet.
- the XML string may be the returned XML string from a WEBSERVICE function call.
- the FILTERXML function can be used to filter any XML string within the spreadsheet application.
- the function takes a string in valid XML format (or HTML or JSON if those are the ones used) and a string in standard XPath format.
- the XPath parameter can be used to search for attributes of the data and obtain a corresponding value of the attribute. If the XML uses a default namespace, an xldefault prefix may be used to reference that element.
- the XPath parameter is used to filter the XML string to return one or more results. If multiple values are returned, the function can be an array entered into the spreadsheet application. Otherwise, existing indexing functions such as INDEX can be used to index into the data. Indexing can be performed using an index function or by using a querying language's syntax (e.g., the syntax available through Xpath). For example, a user may obtain the kth element of the returned values through a query using Xpath.
- the XPath parameter is based off the XPath standard such as described by W3C, a registered trademark of the World Wide Web Consortium; marks of W3C are registered and held by its host institutions MIT, ERCIM, and Keio.
- the XPath parameter can handle 1024 characters.
- the Xpath parameter may be limited only by the available characters to the spreadsheet application. For example, a current version of Excel may limit XPath to 32768 characters. Of course, these numbers should not be construed as limiting the available characters of various implementations.
- FIG. 4A shows an example spreadsheet for illustrating an application of web functions in accordance with certain embodiments of the invention
- FIGS. 4B and 4C show a process flow for applying web functions in accordance with certain embodiments of the invention.
- a web function of an embodiment of the invention can be used in place of a custom function created in VBA for getting stock quotes.
- the example uses the WEBSERVICE function and the FILTERXML function to create a table with current stock quotes.
- the web function WEBSERVICE can be received by the spreadsheet application ( 410 ). It should be understood that in some cases, the function is provided as part of a template or worksheet in a manner that each call to the function may not require re-applying or re-entering the function into the spreadsheet application.
- the argument for the WEBSERVICE function is a URL, which is also received in a cell of the spreadsheet application ( 412 ).
- cell C 3 shown in FIG. 4A can contain the URL 412 -A for the web service being called.
- the web service is from Yahoo! in order to retrieve stock quotes for Microsoft Corp. (MSFT), Apple Inc. (AAPL), Google Inc. (GOOG), and Yahoo! Inc. (YHOO).
- the URL in the argument cell C 3 is retrieved by the spreadsheet application ( 414 ) as part of the spreadsheet calculations and the web service located at the URL is called ( 416 ).
- the argument for the WEBSERVICE function may be entered by a user directly within the function or in a cell that is referenced by the function.
- certain embodiments of the invention enable manipulation of the unfiltered data from within the spreadsheet.
- the response from the web service when the response from the web service is received ( 418 ), the response can be displayed in the spreadsheet ( 420 ).
- the response can be displayed in the spreadsheet ( 420 ).
- an XML string 420 -A can be received and displayed in a cell.
- the data can be filtered to obtain the desired information and manipulated using the tools available in the spreadsheet.
- a FILTERXML can be applied to the XML string received as the web service result.
- the FILTERXML function can be received in a cell ( 422 ) along with the arguments of XPath and the XML string (directly or by reference).
- the FILTERXML function can pass in cell $C$4 to obtain the XML string along with “//quote/@symbol” for the XPath in the ticker column, “//Ask” for the XPath in the quote column, and “//Change” for the XPath in the change column.
- the values from the filtering are returned by the function ( 428 ) and displayed ( 430 ) in the appropriate cells (see element 430 -A in FIG. 4A ).
- web service result is shown as an XML string, embodiments are not limited to XML.
- JSON, HTML, and even images may be returned.
- FIGS. 5A and 5B show an example spreadsheet for illustrating where an output of a web function of an embodiment of the invention is an array.
- FIG. 5A shows a cell 500 containing XML returned from a WEBSERVICE function calling http://schemas.microsoft.com/LiveSearch using “sushi” as a search term (by passing the query through the web service call).
- FIG. 5B shows a representative screenshot of an array of URL elements obtained by applying the FILTERXML function. For example, with an XPath of “/xldefault:SearchResponse/web:Web/web:Results/web:WebResult/web:URL,” the web:URL elements are returned as an array.
- One of the cells, B 8 is shown with XPath “/web:WebResult/web:URL”.
- the result (e.g., the first result) is returned. For example, if there is a single result, the result is copied into all destination cells. If the formula containing the function is array entered, then existing array formula behavior can be followed and the result copied in the spreadsheet application. For example, multiple results can be provided as a one-dimensional array in the spreadsheet application when the XPath evaluates to multiple results. The results can be entered into the destination cells following row major order. The type of the result can be parsed based on a parsing engine of the spreadsheet application.
- web service result is shown as an XML string, embodiments are not limited to XML.
- JSON, HTML, and even images may be returned.
- FIGS. 6A-6C show a process flow utilizing three web functions in accordance with an embodiment of the invention
- FIG. 7 shows an example spreadsheet for illustrating an application of the three web functions in accordance with an embodiment of the invention.
- web functions of embodiments of the invention are used to create a custom solution in which a user of the sheet may perform a search from inside the spreadsheet application and have the results returned into the spreadsheet.
- a search term 712 can be entered into a cell of the spreadsheet.
- An ENCODEURL function referencing the cell in which a user enters the search term 712 can be used to encode the natural language search term into a form recognizable by a search engine web service.
- the ENCODEURL function can be received in a cell of the spreadsheet application ( 610 ). The ENCODEURL does not need to be re-entered for each use of the function if saved in a cell.
- the ENCODEURL function When text is entered into the cell referenced by the ENCODEURL function ( 612 ), the ENCODEURL function encodes the text ( 614 ) into a form recognizable by the web service. For example, spaces between words may be removed or replaced with certain characters.
- a URL having an appended query is used as the argument for a WEBSERVICE function (see element 710 in FIG. 7 , which enables TWITTER to be searched for tweets related to apps for EXCEL).
- the ENCODEURL is used to enable a natural language query to be entered into a cell of the spreadsheet, converted into web service-recognizable form, and appended to a URL to be used as part of a query.
- a WEBSERVICE function received by the spreadsheet application ( 620 ) and taking a URL as an argument (for example, through referencing separate cells and appending the encoded text to the URL 621 , 622 )
- the web service resource at the URL is called ( 623 ).
- the argument for the WEBSERVICE function may be entered by a user directly within the function or in a cell that is referenced by the function.
- text in a cell can be encoded (e.g., such as shown in FIG.
- the URL with appended encoded text can be used as the URL for the WEBSERVICE function argument in order to pass through a search query or other element to the web service.
- the WEBSERVICE function calls the web service located and the URL ( 623 ) and receives a response from the web service ( 624 ).
- certain embodiments of the invention enable manipulation of the unfiltered data from within the spreadsheet.
- the response from the web service when the response from the web service is received ( 624 ), the response can be displayed in the spreadsheet ( 625 ).
- the cell in which the response is provided can be made hidden to a user.
- a FILTERXML can be applied to an XML (or, for example, JSON) string that may be received as the web service result.
- XML or, for example, JSON
- a FILTERXML function can be received in a cell ( 630 ) along with the arguments of XPath ( 632 ) and the data string (directly or by reference).
- the XPath can be used to parse the data ( 634 ) and the values from the filtering are returned by the function ( 636 ) and displayed ( 638 ), for example, in a list 714 as shown in FIG. 7 .
- FIG. 8 shows a diagram illustrating a web service function calculation in accordance with an embodiment of the invention.
- Web service functions can be implemented as built in thread-safe, asynchronous user defined functions on both client/server.
- a first call using the WEBSERVICE function instantiates an HTTP GET request using the URL string of the cell providing the argument for the web function (and even sheet data from other cells).
- the HTTP GET request interfaces with the web service at the URL and receives a response from the web service.
- the spreadsheet system waits for the results from the web service. Because the requests are made asynchronously, multiple requests and main thread formula calculations can be initiated while the spreadsheet application is waiting for results.
- Url 1 is a first URL string and can include sheet data from cells.
- the web function WEBSERVICE initiates an HTTP GET request ( 804 ).
- the HTTP GET request retrieves whatever information (in the form of an entity) is identified by the Request-URI url 1 805 . If the Request-URI refers to a data-producing process, it is the produced data that is returned from the web service 1 806 as the entity in the response 807 and not the source text of the process, unless that text happens to be the output of the process.
- a second thread can be calculated WEBSERVICE(url 2 ) ( 808 ).
- Url 2 is a second URL string and can include sheet data from cells.
- WEBSERVICE initiates an HTTP GET request ( 800 ).
- the HTTP GET request retrieves whatever information (in the form of an entity) is identified by the Request-URI url 2 811 . If the Request-URI refers to a data-producing process, it is the produced data that is returned from the web service 2 812 as the entity in the response 813 and not the source text of the process, unless that text happens to be the output of the process.
- the URL (and web service) may be the same or different for the web functions.
- FIG. 8 shows two web service calls, embodiments are not limited thereto.
- FIG. 9 shows a block diagram illustrating components of a computing device used in some embodiments.
- system 900 can be used in implementing a desktop or notebook computer or a tablet or smart phone that can run one or more applications similar to those of a desktop or notebook computer such as, for example, browser, e-mail, scheduling, instant messaging, and media player applications.
- system 900 is an integrated computing device, such as an integrated personal digital assistant (PDA) and wireless phone.
- PDA personal digital assistant
- System 900 includes a processor 905 that processes data according to instructions of one or more application programs 910 , including a spreadsheet application, and/or operating system 920 .
- the one or more application programs 910 may be loaded into memory 915 and run on or in association with the operating system 920 .
- Examples of application programs include the spreadsheet application, phone dialer programs, web conferencing programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, game programs, and the like.
- Other applications may be loaded into memory 915 and run on the device, including various client and server applications.
- System 900 also includes non-volatile storage 925 within memory 915 .
- Non-volatile storage 925 may be used to store persistent information that should not be lost if system 900 is powered down.
- Application programs 910 may use and store information in non-volatile storage 925 , such as e-mail or other messages used by an e-mail application, and the like.
- a synchronization application may also be included and reside as part of the application programs 910 for interacting with a corresponding synchronization application on a host computer system (such as a server) to keep the information stored in non-volatile storage 925 synchronized with corresponding information stored at the host computer system.
- System 900 has a power supply 930 , which may be implemented as one or more batteries and/or an energy harvester (ambient-radiation, photovoltaic, piezoelectric, thermoelectric, electrostatic, and the like).
- Power supply 930 might further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
- System 900 may also include a radio/network interface 935 that performs the function of transmitting and receiving radio frequency communications.
- the radio/network interface 935 facilitates wireless connectivity between system 900 and the “outside world,” via a communications carrier or service provider. Transmissions to and from the radio/network interface 935 are conducted under control of the operating system 920 , which disseminates communications received by the radio/network interface 935 to application programs 910 and vice versa.
- the radio/network interface 935 allows system 900 to communicate with other computing devices, such as over a network.
- An audio interface 940 can be used to provide audible signals to and receive audible signals from the user.
- the audio interface 940 can be coupled to a speaker to provide audible output and a microphone to receive audible input, such as to facilitate a telephone conversation.
- System 900 may further include video interface 945 that enables an operation of an optional camera ( 950 ) to record still images, video stream, and the like.
- Visual output can be provided via a touch screen display 955 .
- the display may not be touch screen and a user input elements, such as buttons, keys, roller wheel, and the like, are used to select items displayed as part of a graphical user interface on the display 955 .
- a keypad 960 can also be included for user input.
- the keypad 960 may be a physical keypad or a soft keypad generated on the touch screen display 955 .
- any mobile or desktop computing device implementing system 900 may have additional features or functionality and is not limited to the configurations described herein.
- data/information stored via the system 900 may include data caches stored locally on the device or the data may be stored on any number of storage media that may be accessed by the device via the radio/network interface 935 or via a wired connection between the device and a separate computing device associated with the device, for example, a server computer in a distributed computing network, such as the Internet.
- a separate computing device associated with the device
- data/information may be accessed through the device via the radio 935 or a distributed computing network.
- data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.
- program modules include routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types.
- Embodiments may be implemented as a computer process, a computing system, or as an article of manufacture, such as a computer program product or computer-readable medium.
- Certain methods and processes described herein can be embodied as code and/or data, which may be stored on one or more computer-readable media.
- Computer-readable media can be any available computer-readable storage media or communication media that can be accessed by the computer system.
- Certain embodiments of the invention contemplate the use of a machine in the form of a computer system within which a set of instructions, when executed, can cause the system to perform any one or more of the methodologies discussed above.
- Certain computer program products may be one or more computer-readable storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
- Communication media includes computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any delivery media.
- modulated data signal means a signal that has one or more of its characteristics changed or set in a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
- computer-readable storage media include removable and non-removable structures/devices that can be used for storage of information, such as computer-readable instructions, data structures, program modules, and other data used by a computing system/environment.
- a computer-readable storage medium includes, but is not limited to, volatile memory such as random access memories (RAM, DRAM, SRAM); and non-volatile memory such as flash memory, various read-only-memories (ROM, PROM, EPROM, EEPROM), magnetic and ferromagnetic/ferroelectric memories (MRAM, FeRAM), and magnetic and optical storage devices (hard drives, magnetic tape, CDs, DVDs); or other media now known or later developed that is capable of storing computer-readable information/data for use by a computer system.
- Computer-readable storage media should not be construed or interpreted to include any carrier waves or propagating signals.
- the methods and processes described herein can be implemented in hardware modules.
- the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field programmable gate arrays (FPGAs), and other programmable logic devices now known or later developed.
- ASIC application-specific integrated circuit
- FPGAs field programmable gate arrays
- the hardware modules When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
- any reference in this specification to “one embodiment,” “an embodiment,” “example embodiment,” etc. means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention.
- the appearances of such phrases in various places in the specification are not necessarily all referring to the same embodiment.
- any elements or limitations of any invention or embodiment thereof disclosed herein can be combined with any and/or all other elements or limitations (individually or in any combination) or any other invention or embodiment thereof disclosed herein, and all such combinations are contemplated with the scope of the invention without limitation thereto.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- Spreadsheet software applications are graphical presentations and tools for organizing and manipulating data. A spreadsheet application enables a user to apply formulas and functions to data entered into rows and columns of cells in a grid. Each cell can hold a piece of data and can be referenced using a column value (such as a letter) and a row value (such as a number) of where the cell is located. In general, a spreadsheet is a rectangular table or grid of information designed to perform general computations tasks using relationships between cells in the grid. Calculations, graphing tools, and filtering can be carried out on the data (or other content) in the cells and the results displayed. Online and mobile functionality have been incorporated into spreadsheet software applications to provide users with portability and additional access.
- As web services gain in popularity, being able to harness these sources of information is becoming of interest to many data consumers. It can be desirable to be able to incorporate real time data, such as stock prices and weather statistics, into a spreadsheet so that a user may act upon and organize the real time data using the functionality of a spreadsheet.
- Spreadsheet functions are provided that enable interactivity with web services and manipulation of data retrieved from a web service call. A category of “Web” functions is provided including =WEBSERVICE(url), =FILTERXML(xml, xpath), and =ENCODEURL(text).
- WEBSERVICE(url) is used to make an asynchronous web service call, allowing the spreadsheet calculations to continue processing while the request is being processed. Once processed, the result is returned to the spreadsheet application. On entry, the spreadsheet application employs a caching mechanism to cache any previous calls for a short duration to improve performance. Additionally, only a certain number of web requests may be allowed at any given time. However, this limit does not necessarily apply to the number of WEBSERVICE(url) calls in a spreadsheet.
- FILTERXML(xml, xpath) takes in an arbitrary valid XML string and uses the XPath notation standard to query and return values from the XML. It can be used with any web services that return data in any XML format and any string in XML format. This function can return one or more values. If multiple values are returned the function can be array entered into the spreadsheet application. Otherwise, existing indexing functions such as INDEX can be used to index into the data. The filtering function allows a user to filter on XML strings based on the xpath argument. The xpath argument can be a standard XPath string, which can be used to return the result(s) from the XML, and is evaluated synchronously.
- ENCODEURL(text) encodes specified text and is evaluated synchronously. This function allows the user to use references to other cells allowing the proper encoding to be used as input to the URL parameter in WEBSERVICE function
- The functions can also be accessed programmatically, for example, through visual basic for applications (VBA) or C API, which can facilitate the creation of custom solutions.
- This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
-
FIG. 1 is a system diagram illustrating an illustrative operating environment for various embodiments disclosed herein -
FIG. 2 shows an example system on which certain embodiments of the invention may be carried out. -
FIGS. 3A and 3B illustrate examples involving a representative spreadsheet in which web functions of certain embodiments of the invention are used. -
FIG. 4A shows an example spreadsheet for illustrating an application of web functions in accordance with certain embodiments of the invention. -
FIGS. 4B and 4C show a process flow for applying web functions in accordance with certain embodiments of the invention. -
FIGS. 5A and 5B show an example spreadsheet for illustrating where an output of a web function of an embodiment of the invention is an array. -
FIGS. 6A-6C show a process flow utilizing three web functions in accordance with an embodiment of the invention. -
FIG. 7 shows an example spreadsheet for illustrating an application of the three web functions in accordance with an embodiment of the invention. -
FIG. 8 shows a diagram of a calculation process in accordance with an embodiment of the invention. -
FIG. 9 shows a block diagram illustrating components of a computing device used in some embodiments. - Spreadsheet functions are provided that enable interactivity with web services and manipulation of data retrieved from a web service call. A function performs a calculation and returns a value. In accordance with the systems and techniques described herein, a variety of content can be returned from a source to the spreadsheet application. In addition, a function is provided that can be used as part of a spreadsheet model, enabling encoding of parameters to the REST call.
- Embodiments facilitate the retrieval of live web data from a publicly available web service without a user having to create custom code. According to certain embodiments of the invention, REST end points can be queried using the HTTP protocol through a built-in asynchronous worksheet function, reducing the need for customer developer code.
- In addition, various embodiments of the invention provide this functionality without placing a cap on the number of calls to the publicly available web services that can be made in one workbook of a spreadsheet application. Certain embodiments of the invention include security related aspects which inhibit the Web functions of various embodiments of the invention from causing denial of service (DoS) attacks by the spreadsheet application while not placing a strict limit on the number of calls that can be made in a spreadsheet. For example, while only a certain number of web requests may be allowed at any given time, this limit does not necessarily apply to the number of WEBSERVICE(url) calls in a spreadsheet.
- According to certain embodiments, the control of the number of web service requests can be accomplished through caching and throttling. For caching, when a web service call is performed via the WEBSERVICE(url) function, the response may be stored locally in a cache for a period of time. For example, in a WEBSERVICE call to a Wikipedia API, a first call may successfully return a response. At this time, a value is provided in a corresponding cell (and stored in a cache locally). If, within a predetermined time period (for example, 2-60 seconds), another WEBSERVICE(url) call is made to the same URL, it is conceivable—and in this case expected—that a same result would be returned again. For this type of situation, WEBSERVICE does not make a web request and instead accesses the cache and returns the cached value.
- For throttling, the number of active HTTP calls that can be made at a given time is limited. For example, an unbounded number of WEBSERVICE calls may be allowed in the spreadsheet, but only a certain number of HTTP requests are made active at a given time. This is similar to the traffic lights on freeway on-ramps during rush hour; a certain number of cars are allowed to pass in a certain time, but eventually each car waiting to enter the freeway will get through.
- A workbook is a spreadsheet file that generally contains at least one worksheet. The worksheets in a workbook each present a grid of cells that can reference cells in a same worksheet or in another worksheet of the workbook.
- Examples of spreadsheet applications include MICROSOFT EXCEL, which may be proved as a standalone application or as part of an application suite such as MICROSOFT OFFICE or MICROSOFT WEB APPS and OFFICE365, trademarks and registered trademarks of Microsoft Corp., the spreadsheets of the GOOGLE DOCS program, a trademark of Google Inc., and APPLE NUMBERS, a registered trademark of Apple Inc.
-
FIG. 1 shows an operating environment in accordance with an embodiment of the invention. Referring toFIG. 1 , aclient 110 and aserver 120 communicate via anetwork 130. Aweb service 140 may be implemented betweenclient 110 andserver 120 as well as betweenclient 110 and one or more other servers (for example, search engine server 145) or betweenserver 120 and one or more other servers (for example, search engine server 145). - Communication between computing devices in a client-server relationship may be initiated by a client sending a request to the server asking for access to a particular resource or for particular work to be performed. The server may subsequently perform the actions requested and send a response back to the client.
- An application programming interface (API) may be incorporated to provide a software-to-software interface that enables applications to communicate over the
network 130. - An API is generally a set of programming instructions and standards for enabling two or more applications to communicate with each other and is commonly implemented as a set of Hypertext Transfer Protocol (HTTP) request messages and a specified format or structure for response messages. The messages can contain an information resource. A resource is information that can be identified by a uniform resource identifier (URI) and may be a file, a dynamically-generated query result, the output of a common gateway interface (CGI) script, a document that is available in several languages, and the like.
- Common formats for the messages include Extensible Markup Language (XML) and JavaScript Object Notation (JSON) formats. The requests and responses (e.g., the calls back and forth between applications) according to an API can be managed through web services.
- One type of API is a web service. A web service is a software system that supports interoperable machine-to-machine interaction over a network and enables software to connect to other software applications. A web service provides a collection of technological standards and protocols. The web service provides functions that may be implemented by a software or hardware agent that sends and receives messages (e.g., the computing platforms requesting and providing a particular service). Web Services are readily available sources of information across the web today. Major web sites offer Representational state transfer (REST) compliant web services as part of their public API offerings.
- REST refers to a web architecture that governs the behavior between clients and servers of a distributed system such as the Web. In general, a RESTful web service presents a uniform interface between clients and servers and may be implemented using, for example, HTTP, XML, and JSON. Instead of requiring a well-defined message to a particular resource, REST may simply request a specific resource.
- Although
web service 140 andnetwork 130 are illustrated as separate entities inFIG. 1 , it should be understood that the distinction is merely to emphasize the web service application. The web service may be implemented using one or more physical and/or virtual servers communicating overnetwork 130. Applications running onclient 110 andserver 120 can access web services via ubiquitous Web protocols and data formats such as HTTP, XML, JSON and SOAP. - In accordance with certain embodiments of the invention, the
network 130 may be an internet, an intranet, or an extranet, and can be any suitable communications network including, but not limited to, a cellular (e.g., wireless phone) network, the Internet, a local area network (LAN), a wide area network (WAN), a WiFi network, an ad-hoc network, or a combination thereof. Such networks may involve connections of network elements, such as hubs, bridges, routers, switches, servers, and gateways. - The
network 130 may include one or more connected networks (e.g., a multi-network environment) including public networks, such as the Internet, and/or private networks such as a secure enterprise private network. Access to thenetwork 130 may be provided via one or more wired or wireless access networks (not shown), as will be understood by those skilled in the art. As will also be appreciated by those skilled in the art, communication networks can take several different forms and can use several different communication protocols. - The
client 110 and theserver 120 can involve computing systems configured with one or more central processing units (CPUs), memory, mass storage, and I/O devices (e.g., network interface, user input device). Elements of the computing system can communicate with each other via a bus. The hardware platform of computing systems can be embodied in many forms, including, but not limited to, a personal computer, a server computer, a hand-held or laptop device, a multiprocessor system, a microprocessor-based system, programmable consumer electronics, and a distributed computing environment that includes any of the above systems or devices. - In certain embodiments, the
client 110 can be embodied as a computing device including, but not limited to, a personal computer, a tablet, a mobile device, a personal digital assistant (PDA), a smartphone, a laptop (or notebook or netbook) computer, a gaming device or console, a desktop computer, or a smart television. - In certain embodiments, the
server 120 can be embodied as a computing device including, but not limited to, a server computer, an enterprise computer, a personal computer, a multiprocessor system, a microprocessor-based system, and a combination thereof. It should be understood that the listing of client computing devices and the server computing devices is not intended to be limiting and that the client and server may be embodied in the same or different form. - The
client computing device 110 is configured to execute anoperating system 111 and one or more application programs such as, in the illustrated embodiment, aspreadsheet application 112, aweb browser application 113, and/or one or more other applications. - The
operating system 111 is a computer program for controlling the operation of theclient computing device 110. The application programs are executable programs configured to execute on top of theoperating system 111 to provide various functionality such as described herein. Thespreadsheet application 112 is an application program configured to receive and display data in cells in a simulated worksheet of rows and columns. One or more formulas can be applied to all or a portion of the data to perform calculations, filtering, and other analysis. The data can alternatively or additionally be used as the basis for creating tables, charts, sparklines (a simplified line chart), and other visualizations. - The
web browser application 113 is an application program for retrieving and traversing information resources on the World Wide Web (“the Web”), as well as resources provided by web servers in private networks via thenetwork 130, and presenting the information resources to a user (e.g., rendering for display). Moreover, theweb browser application 113 allows a user to access information and various functions provided by a server. - The illustrated
server computer 120 is configured to execute aserver operating system 121, one or more application programs such as aserver spreadsheet application 122, and/or one or more other applications. - The
server operating system 121 is a computer program for controlling the operation of theserver computing device 120, and the application programs are executable programs configured to execute on top of theserver operating system 121 to provide various functionality described herein. Theserver spreadsheet application 122, in some embodiments, is a web-based application program configured to receive and display data in cells in a spreadsheet document such as a worksheet. In some embodiments, theserver computer 120 is configured to execute theserver spreadsheet application 122 and theclient computing device 110 is configured to access theserver computer 120 to interact with theserver spreadsheet application 122 in a client/server configuration. In these embodiments, theserver spreadsheet application 122 may provide functionality that is identical to thespreadsheet application 112. - In one embodiment, the client
web browser application 113 is used to connect with a server, for example,server computing device 120, in order to access a web-basedspreadsheet application 122. - It should be understood that multiple client computing devices, multiple networks, and/or multiple servers may be included as part of the operating environment.
- Embodiments facilitate the use of web content in spreadsheet applications through the use of functions that get web content and convert the web content into usable data. Instead of requiring custom coding for a user to get live web data from a publicly available web service, embodiments provide web service functions from within a spreadsheet application. This enables a user to bring live web data into the spreadsheet application where the data can be manipulated and displayed using the tools available within the spreadsheet application.
- Currently, a user would utilize a macro to create code in visual basic for applications (VBA) for a specific function. VBA is a software tool for creating macros, procedures and custom functions that may be used in spreadsheet applications such as MICROSOFT EXCEL. Certain spreadsheet applications support user functions created in VBA. However, crafting custom VBA functions may be time-consuming and non-trivial. Embodiments of the invention can enable a developer to skip the programming steps and use a function within the spreadsheet program. As an alternative to VBA, users may also utilize a C API (a C or C++ programming interface).
- For example, through VBA or a C API, a VBA macro may be created that uses WEBSERVICE programmatically to get weather data from a Web service, processes the data, and inserts the results in the spreadsheet.
-
FIG. 2 shows an example system on which certain embodiments of the invention may be carried out. Referring toFIG. 2 , a client computing device, such as atablet 200 can display aspreadsheet application 210 that may be a spreadsheet application running on thedevice 200 or a spreadsheet application running on a server and accessed through a web browser application running on thedevice 200. In one embodiment, a user may access aweb function 220 from a menu, drop-down box, or ribbon. Thecomputing device 200 can include components as described with respect toFIG. 9 . - The
web function 220 can include functions that bring data from REST API sources as well as functions that filter the data received from the REST API sources and encode data for use in calling REST API sources. Of course, it should be understood that embodiments are not limited to interactions with REST API sources, and data received through any suitable source (including user manual input) may be filtered and encoded using web functions described herein. - In accordance with one embodiment of the invention, a web function =WEBSERVICE(url) is provided that returns data from a web service given the uniform resource locator (URL) of the web service. For example, referring to
FIG. 3A , the function =WEBSERVICE($B$3) can take the string at cell B3, which contains the URL “http://money.service.msn.com/StockQuotes.aspx?v=1”, as its argument. The function makes an asynchronous web service call, allowing the spreadsheet calculations to continue processing while the request is being processed. Once processed, the result is returned to the spreadsheet application where the application can finish calculation of any formulas that depend on the web service function. On entry, the spreadsheet application employs a caching mechanism to cache any previous calls for a short duration to improve performance. - In operation, the function asynchronously calls the web service located at the URL by using an HTTP GET request and returns the response.
- The GET request retrieves the information identified by the request URI—the URL in this embodiment. If the request URI refers to a data-producing process, it is the produced data that is returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.
- In accordance with another embodiment of the invention, a web function =ENCODEURL(text) is provided that returns a URL encoded string given text. The function encodes the argument text into a form that is appropriate for a site to which a web service request may be made. In a further embodiment, the =ENCODEURL(text) may be applied to a cell in the spreadsheet and the =WEBSERVICE(url) function may refer to the cell that is URL encoded for its argument.
- In some embodiments, the =ENCODEURL(text) function can prepend certain characters (such as “?”) and/or insert other characters (such as “&”) between each key-value pair as specified in the URL encoding general syntax rules provided, for example, by the Internet Engineering Task Force (IETF). Of course, embodiments are not limited thereto and the prepending and/or insertion of certain characters may be omitted. As an example, =ENCODEURL($A$1), such as shown in
FIG. 3B , where cell A1 contains the string “hello world” would return “hello%20world” (shown in cell B1). - In accordance with yet another embodiment of the invention, a web function =FILTERXML(xml,xpath) (or alternatively, a hypertext markup language (HTML) or JSON filter) is provided that gets specific data from an XML string in the spreadsheet. The XML string may be the returned XML string from a WEBSERVICE function call. In addition to filtering data received from the REST API sources, the FILTERXML function can be used to filter any XML string within the spreadsheet application.
- The function takes a string in valid XML format (or HTML or JSON if those are the ones used) and a string in standard XPath format. The XPath parameter can be used to search for attributes of the data and obtain a corresponding value of the attribute. If the XML uses a default namespace, an xldefault prefix may be used to reference that element. The XPath parameter is used to filter the XML string to return one or more results. If multiple values are returned, the function can be an array entered into the spreadsheet application. Otherwise, existing indexing functions such as INDEX can be used to index into the data. Indexing can be performed using an index function or by using a querying language's syntax (e.g., the syntax available through Xpath). For example, a user may obtain the kth element of the returned values through a query using Xpath.
- The XPath parameter is based off the XPath standard such as described by W3C, a registered trademark of the World Wide Web Consortium; marks of W3C are registered and held by its host institutions MIT, ERCIM, and Keio. In one embodiment, the XPath parameter can handle 1024 characters. In other embodiments, the Xpath parameter may be limited only by the available characters to the spreadsheet application. For example, a current version of Excel may limit XPath to 32768 characters. Of course, these numbers should not be construed as limiting the available characters of various implementations.
- A greater understanding of the present invention and of its many advantages may be had from the following examples, given by way of illustration. The following examples are illustrative of some of the methods, applications, embodiments and variants of the present invention. They are, of course, not to be considered in any way limitative of the invention. Numerous changes and modifications can be made with respect to the invention.
-
FIG. 4A shows an example spreadsheet for illustrating an application of web functions in accordance with certain embodiments of the invention; andFIGS. 4B and 4C show a process flow for applying web functions in accordance with certain embodiments of the invention. - In the example of
FIG. 4A , a web function of an embodiment of the invention can be used in place of a custom function created in VBA for getting stock quotes. In particular, the example uses the WEBSERVICE function and the FILTERXML function to create a table with current stock quotes. As shown inFIG. 4B , the web function WEBSERVICE can be received by the spreadsheet application (410). It should be understood that in some cases, the function is provided as part of a template or worksheet in a manner that each call to the function may not require re-applying or re-entering the function into the spreadsheet application. The argument for the WEBSERVICE function is a URL, which is also received in a cell of the spreadsheet application (412). For example, cell C3 shown inFIG. 4A can contain the URL 412-A for the web service being called. In this case, the web service is from Yahoo! in order to retrieve stock quotes for Microsoft Corp. (MSFT), Apple Inc. (AAPL), Google Inc. (GOOG), and Yahoo! Inc. (YHOO). - The URL in the argument cell C3 is retrieved by the spreadsheet application (414) as part of the spreadsheet calculations and the web service located at the URL is called (416). The argument for the WEBSERVICE function may be entered by a user directly within the function or in a cell that is referenced by the function.
- Because the call (416) to the web service located at the URL is performed asynchronously, other calculations may be carried out while waiting for the results to be received.
- Instead of filtering the data from the web service before providing to the spreadsheet, certain embodiments of the invention enable manipulation of the unfiltered data from within the spreadsheet.
- For example, when the response from the web service is received (418), the response can be displayed in the spreadsheet (420). For example, as shown in
FIG. 4A , an XML string 420-A can be received and displayed in a cell. - Once the XML string 420-A is within the spreadsheet application, the data can be filtered to obtain the desired information and manipulated using the tools available in the spreadsheet. For example, as one of the available web functions, a FILTERXML can be applied to the XML string received as the web service result. The FILTERXML function can be received in a cell (422) along with the arguments of XPath and the XML string (directly or by reference). For example, the FILTERXML function can pass in cell $C$4 to obtain the XML string along with “//quote/@symbol” for the XPath in the ticker column, “//Ask” for the XPath in the quote column, and “//Change” for the XPath in the change column. The values from the filtering are returned by the function (428) and displayed (430) in the appropriate cells (see element 430-A in
FIG. 4A ). - Although the web service result is shown as an XML string, embodiments are not limited to XML. For example, JSON, HTML, and even images may be returned.
-
FIGS. 5A and 5B show an example spreadsheet for illustrating where an output of a web function of an embodiment of the invention is an array.FIG. 5A shows acell 500 containing XML returned from a WEBSERVICE function calling http://schemas.microsoft.com/LiveSearch using “sushi” as a search term (by passing the query through the web service call).FIG. 5B shows a representative screenshot of an array of URL elements obtained by applying the FILTERXML function. For example, with an XPath of “/xldefault:SearchResponse/web:Web/web:Results/web:WebResult/web:URL,” the web:URL elements are returned as an array. One of the cells, B8, is shown with XPath “/web:WebResult/web:URL”. - In accordance with an embodiment, if the formula containing the function is entered as a regular formula, the result (e.g., the first result) is returned. For example, if there is a single result, the result is copied into all destination cells. If the formula containing the function is array entered, then existing array formula behavior can be followed and the result copied in the spreadsheet application. For example, multiple results can be provided as a one-dimensional array in the spreadsheet application when the XPath evaluates to multiple results. The results can be entered into the destination cells following row major order. The type of the result can be parsed based on a parsing engine of the spreadsheet application.
- Although the web service result is shown as an XML string, embodiments are not limited to XML. For example, JSON, HTML, and even images may be returned.
-
FIGS. 6A-6C show a process flow utilizing three web functions in accordance with an embodiment of the invention; andFIG. 7 shows an example spreadsheet for illustrating an application of the three web functions in accordance with an embodiment of the invention. - In the example of
FIG. 7 , web functions of embodiments of the invention are used to create a custom solution in which a user of the sheet may perform a search from inside the spreadsheet application and have the results returned into the spreadsheet. - As shown in
FIG. 7 , asearch term 712 can be entered into a cell of the spreadsheet. An ENCODEURL function referencing the cell in which a user enters thesearch term 712 can be used to encode the natural language search term into a form recognizable by a search engine web service. For example, referring toFIG. 6A , the ENCODEURL function can be received in a cell of the spreadsheet application (610). The ENCODEURL does not need to be re-entered for each use of the function if saved in a cell. - When text is entered into the cell referenced by the ENCODEURL function (612), the ENCODEURL function encodes the text (614) into a form recognizable by the web service. For example, spaces between words may be removed or replaced with certain characters.
- For the example illustrated in
FIG. 7 , a URL having an appended query is used as the argument for a WEBSERVICE function (seeelement 710 inFIG. 7 , which enables TWITTER to be searched for tweets related to apps for EXCEL). - Here, the ENCODEURL is used to enable a natural language query to be entered into a cell of the spreadsheet, converted into web service-recognizable form, and appended to a URL to be used as part of a query. As shown in
FIG. 6B , with a WEBSERVICE function received by the spreadsheet application (620) and taking a URL as an argument (for example, through referencing separate cells and appending the encoded text to theURL 621, 622), the web service resource at the URL is called (623). The argument for the WEBSERVICE function may be entered by a user directly within the function or in a cell that is referenced by the function. According to an embodiment, text in a cell can be encoded (e.g., such as shown inFIG. 6A ) and the encoded text appended to a URL (622). Then, the URL with appended encoded text can be used as the URL for the WEBSERVICE function argument in order to pass through a search query or other element to the web service. The WEBSERVICE function calls the web service located and the URL (623) and receives a response from the web service (624). - Because the call (623) to the web service located at the URL is performed asynchronously, other calculations may be carried out while waiting for the results to be received.
- Instead of filtering the data from the web service before providing to the spreadsheet, certain embodiments of the invention enable manipulation of the unfiltered data from within the spreadsheet.
- For example, when the response from the web service is received (624), the response can be displayed in the spreadsheet (625). Of course, the cell in which the response is provided can be made hidden to a user.
- Once the data is within the spreadsheet application, the data can be filtered to obtain the desired information and manipulated using the tools available in the spreadsheet. For example, as one of the available web functions, a FILTERXML can be applied to an XML (or, for example, JSON) string that may be received as the web service result. For example, as shown in
FIG. 6C , a FILTERXML function can be received in a cell (630) along with the arguments of XPath (632) and the data string (directly or by reference). The XPath can be used to parse the data (634) and the values from the filtering are returned by the function (636) and displayed (638), for example, in alist 714 as shown inFIG. 7 . -
FIG. 8 shows a diagram illustrating a web service function calculation in accordance with an embodiment of the invention. Referring toFIG. 8 , multiple web service requests can be initiated. Web service functions can be implemented as built in thread-safe, asynchronous user defined functions on both client/server. A first call using the WEBSERVICE function instantiates an HTTP GET request using the URL string of the cell providing the argument for the web function (and even sheet data from other cells). The HTTP GET request interfaces with the web service at the URL and receives a response from the web service. The spreadsheet system waits for the results from the web service. Because the requests are made asynchronously, multiple requests and main thread formula calculations can be initiated while the spreadsheet application is waiting for results. - For example, a calculation process can begin 800 to calculate a first thread =WEBSERVICE(url1) (802). Url1 is a first URL string and can include sheet data from cells. The web function WEBSERVICE initiates an HTTP GET request (804). The HTTP GET request retrieves whatever information (in the form of an entity) is identified by the Request-
URI url1 805. If the Request-URI refers to a data-producing process, it is the produced data that is returned from theweb service 1 806 as the entity in theresponse 807 and not the source text of the process, unless that text happens to be the output of the process. - A second thread can be calculated =WEBSERVICE(url2) (808). Url2 is a second URL string and can include sheet data from cells. The web function WEBSERVICE initiates an HTTP GET request (800). The HTTP GET request retrieves whatever information (in the form of an entity) is identified by the Request-
URI url2 811. If the Request-URI refers to a data-producing process, it is the produced data that is returned from theweb service 2 812 as the entity in theresponse 813 and not the source text of the process, unless that text happens to be the output of the process. - Other functions may be calculated 814 as part of the calculation process while waiting for the
results - The URL (and web service) may be the same or different for the web functions. In addition, although
FIG. 8 shows two web service calls, embodiments are not limited thereto. -
FIG. 9 shows a block diagram illustrating components of a computing device used in some embodiments. For example,system 900 can be used in implementing a desktop or notebook computer or a tablet or smart phone that can run one or more applications similar to those of a desktop or notebook computer such as, for example, browser, e-mail, scheduling, instant messaging, and media player applications. In some embodiments,system 900 is an integrated computing device, such as an integrated personal digital assistant (PDA) and wireless phone. -
System 900 includes aprocessor 905 that processes data according to instructions of one ormore application programs 910, including a spreadsheet application, and/oroperating system 920. The one ormore application programs 910 may be loaded intomemory 915 and run on or in association with theoperating system 920. Examples of application programs include the spreadsheet application, phone dialer programs, web conferencing programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, game programs, and the like. Other applications may be loaded intomemory 915 and run on the device, including various client and server applications. -
System 900 also includesnon-volatile storage 925 withinmemory 915.Non-volatile storage 925 may be used to store persistent information that should not be lost ifsystem 900 is powered down.Application programs 910 may use and store information innon-volatile storage 925, such as e-mail or other messages used by an e-mail application, and the like. A synchronization application may also be included and reside as part of theapplication programs 910 for interacting with a corresponding synchronization application on a host computer system (such as a server) to keep the information stored innon-volatile storage 925 synchronized with corresponding information stored at the host computer system. -
System 900 has apower supply 930, which may be implemented as one or more batteries and/or an energy harvester (ambient-radiation, photovoltaic, piezoelectric, thermoelectric, electrostatic, and the like).Power supply 930 might further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries. -
System 900 may also include a radio/network interface 935 that performs the function of transmitting and receiving radio frequency communications. The radio/network interface 935 facilitates wireless connectivity betweensystem 900 and the “outside world,” via a communications carrier or service provider. Transmissions to and from the radio/network interface 935 are conducted under control of theoperating system 920, which disseminates communications received by the radio/network interface 935 toapplication programs 910 and vice versa. - The radio/
network interface 935 allowssystem 900 to communicate with other computing devices, such as over a network. - An
audio interface 940 can be used to provide audible signals to and receive audible signals from the user. For example, theaudio interface 940 can be coupled to a speaker to provide audible output and a microphone to receive audible input, such as to facilitate a telephone conversation.System 900 may further includevideo interface 945 that enables an operation of an optional camera (950) to record still images, video stream, and the like. Visual output can be provided via atouch screen display 955. In some cases, the display may not be touch screen and a user input elements, such as buttons, keys, roller wheel, and the like, are used to select items displayed as part of a graphical user interface on thedisplay 955. Akeypad 960 can also be included for user input. Thekeypad 960 may be a physical keypad or a soft keypad generated on thetouch screen display 955. - It should be understood the any mobile or desktop computing
device implementing system 900 may have additional features or functionality and is not limited to the configurations described herein. - In various implementations, data/information stored via the
system 900 may include data caches stored locally on the device or the data may be stored on any number of storage media that may be accessed by the device via the radio/network interface 935 or via a wired connection between the device and a separate computing device associated with the device, for example, a server computer in a distributed computing network, such as the Internet. As should be appreciated such data/information may be accessed through the device via theradio 935 or a distributed computing network. Similarly, such data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems. - Certain techniques set forth herein may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computing devices. Generally, program modules include routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types.
- Embodiments may be implemented as a computer process, a computing system, or as an article of manufacture, such as a computer program product or computer-readable medium. Certain methods and processes described herein can be embodied as code and/or data, which may be stored on one or more computer-readable media. Computer-readable media can be any available computer-readable storage media or communication media that can be accessed by the computer system. Certain embodiments of the invention contemplate the use of a machine in the form of a computer system within which a set of instructions, when executed, can cause the system to perform any one or more of the methodologies discussed above. Certain computer program products may be one or more computer-readable storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
- Communication media includes computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics changed or set in a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
- It should be appreciated by those skilled in the art that computer-readable storage media include removable and non-removable structures/devices that can be used for storage of information, such as computer-readable instructions, data structures, program modules, and other data used by a computing system/environment. A computer-readable storage medium includes, but is not limited to, volatile memory such as random access memories (RAM, DRAM, SRAM); and non-volatile memory such as flash memory, various read-only-memories (ROM, PROM, EPROM, EEPROM), magnetic and ferromagnetic/ferroelectric memories (MRAM, FeRAM), and magnetic and optical storage devices (hard drives, magnetic tape, CDs, DVDs); or other media now known or later developed that is capable of storing computer-readable information/data for use by a computer system. Computer-readable storage media should not be construed or interpreted to include any carrier waves or propagating signals.
- Furthermore, in addition to being implemented as software, the methods and processes described herein can be implemented in hardware modules. For example, the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field programmable gate arrays (FPGAs), and other programmable logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
- Any reference in this specification to “one embodiment,” “an embodiment,” “example embodiment,” etc., means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of such phrases in various places in the specification are not necessarily all referring to the same embodiment. In addition, any elements or limitations of any invention or embodiment thereof disclosed herein can be combined with any and/or all other elements or limitations (individually or in any combination) or any other invention or embodiment thereof disclosed herein, and all such combinations are contemplated with the scope of the invention without limitation thereto.
- It should be understood that the examples and embodiments described herein are for illustrative purposes only and that various modifications or changes in light thereof will be suggested to persons skilled in the art and are to be included within the spirit and purview of this application.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/672,704 US20140136936A1 (en) | 2012-11-09 | 2012-11-09 | Spreadsheet functions to call rest api sources |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/672,704 US20140136936A1 (en) | 2012-11-09 | 2012-11-09 | Spreadsheet functions to call rest api sources |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140136936A1 true US20140136936A1 (en) | 2014-05-15 |
Family
ID=50682951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/672,704 Abandoned US20140136936A1 (en) | 2012-11-09 | 2012-11-09 | Spreadsheet functions to call rest api sources |
Country Status (1)
Country | Link |
---|---|
US (1) | US20140136936A1 (en) |
Cited By (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140173400A1 (en) * | 2012-12-17 | 2014-06-19 | Thomson Reuters Global Resources | Dynamic function builder |
US20150026075A1 (en) * | 2013-07-16 | 2015-01-22 | Microsoft Corporation | Control of crm data based on spreadsheet actions |
US20150052099A1 (en) * | 2013-08-19 | 2015-02-19 | Business Objects Software Ltd | Displaying historical data associated with data values within business intelligence reports |
US20160274759A1 (en) | 2008-08-25 | 2016-09-22 | Paul J. Dawes | Security system with networked touchscreen and gateway |
WO2016201033A1 (en) * | 2015-06-09 | 2016-12-15 | Icontrol Networks, Inc. | Data model for home automation |
US20170060830A1 (en) * | 2015-08-26 | 2017-03-02 | YTML Consulting Pty Ltd | System and process for generating an internet application |
US20170070563A1 (en) * | 2008-08-11 | 2017-03-09 | Ken Sundermeyer | Data model for home automation |
CN106878243A (en) * | 2016-06-06 | 2017-06-20 | 阿里巴巴集团控股有限公司 | Method for processing business and device |
CN107526755A (en) * | 2016-09-27 | 2017-12-29 | 腾讯科技(深圳)有限公司 | The processing method and processing device of data |
CN108038213A (en) * | 2017-12-21 | 2018-05-15 | 中国农业银行股份有限公司 | A kind of method of data processing, client, server and system |
US10051078B2 (en) | 2007-06-12 | 2018-08-14 | Icontrol Networks, Inc. | WiFi-to-serial encapsulation in systems |
US10062273B2 (en) | 2010-09-28 | 2018-08-28 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US10062245B2 (en) | 2005-03-16 | 2018-08-28 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US10078958B2 (en) | 2010-12-17 | 2018-09-18 | Icontrol Networks, Inc. | Method and system for logging security event data |
US10079839B1 (en) | 2007-06-12 | 2018-09-18 | Icontrol Networks, Inc. | Activation of gateway device |
US10091014B2 (en) | 2005-03-16 | 2018-10-02 | Icontrol Networks, Inc. | Integrated security network with security alarm signaling system |
US10127801B2 (en) | 2005-03-16 | 2018-11-13 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US10142392B2 (en) | 2007-01-24 | 2018-11-27 | Icontrol Networks, Inc. | Methods and systems for improved system performance |
US10142166B2 (en) | 2004-03-16 | 2018-11-27 | Icontrol Networks, Inc. | Takeover of security network |
US10140840B2 (en) | 2007-04-23 | 2018-11-27 | Icontrol Networks, Inc. | Method and system for providing alternate network access |
US10142394B2 (en) | 2007-06-12 | 2018-11-27 | Icontrol Networks, Inc. | Generating risk profile using data of home monitoring and security system |
US10156959B2 (en) | 2005-03-16 | 2018-12-18 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US10156831B2 (en) | 2004-03-16 | 2018-12-18 | Icontrol Networks, Inc. | Automation system with mobile interface |
US10200504B2 (en) | 2007-06-12 | 2019-02-05 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US10237806B2 (en) | 2009-04-30 | 2019-03-19 | Icontrol Networks, Inc. | Activation of a home automation controller |
US10237237B2 (en) | 2007-06-12 | 2019-03-19 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
CN109558171A (en) * | 2018-12-04 | 2019-04-02 | 白华 | It is a kind of to define and control computer method using electrical form |
US10313303B2 (en) | 2007-06-12 | 2019-06-04 | Icontrol Networks, Inc. | Forming a security network including integrated security system components and network devices |
US10339791B2 (en) | 2007-06-12 | 2019-07-02 | Icontrol Networks, Inc. | Security network integrated with premise security system |
US10348575B2 (en) | 2013-06-27 | 2019-07-09 | Icontrol Networks, Inc. | Control system user interface |
US10365810B2 (en) | 2007-06-12 | 2019-07-30 | Icontrol Networks, Inc. | Control system user interface |
US10382452B1 (en) | 2007-06-12 | 2019-08-13 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10380871B2 (en) | 2005-03-16 | 2019-08-13 | Icontrol Networks, Inc. | Control system user interface |
US10389736B2 (en) | 2007-06-12 | 2019-08-20 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10423309B2 (en) | 2007-06-12 | 2019-09-24 | Icontrol Networks, Inc. | Device integration framework |
US10498830B2 (en) | 2007-06-12 | 2019-12-03 | Icontrol Networks, Inc. | Wi-Fi-to-serial encapsulation in systems |
US10522026B2 (en) | 2008-08-11 | 2019-12-31 | Icontrol Networks, Inc. | Automation system user interface with three-dimensional display |
US10523689B2 (en) | 2007-06-12 | 2019-12-31 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US10530839B2 (en) | 2008-08-11 | 2020-01-07 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
CN110675133A (en) * | 2019-09-30 | 2020-01-10 | 北京金山安全软件有限公司 | Red packet robbing method and device, electronic equipment and readable storage medium |
US10540153B2 (en) * | 2016-12-03 | 2020-01-21 | Thomas STACHURA | Spreadsheet-based software application development |
US10559193B2 (en) | 2002-02-01 | 2020-02-11 | Comcast Cable Communications, Llc | Premises management systems |
US10616075B2 (en) | 2007-06-12 | 2020-04-07 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10666523B2 (en) | 2007-06-12 | 2020-05-26 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10701160B2 (en) * | 2016-07-28 | 2020-06-30 | Polybit Inc. | System and method for a unified interface to networked webservices |
US10705805B1 (en) * | 2017-12-12 | 2020-07-07 | Amazon Technologies, Inc. | Application authoring using web-of-sheets data model |
US10721087B2 (en) | 2005-03-16 | 2020-07-21 | Icontrol Networks, Inc. | Method for networked touchscreen with integrated interfaces |
US10747216B2 (en) | 2007-02-28 | 2020-08-18 | Icontrol Networks, Inc. | Method and system for communicating with and controlling an alarm system from a remote server |
US10785319B2 (en) | 2006-06-12 | 2020-09-22 | Icontrol Networks, Inc. | IP device discovery systems and methods |
US10841381B2 (en) | 2005-03-16 | 2020-11-17 | Icontrol Networks, Inc. | Security system with networked touchscreen |
US10877736B2 (en) | 2016-12-03 | 2020-12-29 | Thomas STACHURA | Spreadsheet-based software application development |
US10979389B2 (en) | 2004-03-16 | 2021-04-13 | Icontrol Networks, Inc. | Premises management configuration and control |
US10999254B2 (en) | 2005-03-16 | 2021-05-04 | Icontrol Networks, Inc. | System for data routing in networks |
US11080291B2 (en) * | 2017-08-02 | 2021-08-03 | Sap Se | Downloading visualization data between computer systems |
US11089122B2 (en) | 2007-06-12 | 2021-08-10 | Icontrol Networks, Inc. | Controlling data routing among networks |
US20210248134A1 (en) * | 2017-12-04 | 2021-08-12 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US11113950B2 (en) | 2005-03-16 | 2021-09-07 | Icontrol Networks, Inc. | Gateway integrated with premises security system |
US11146637B2 (en) | 2014-03-03 | 2021-10-12 | Icontrol Networks, Inc. | Media content management |
US20210319172A1 (en) * | 2015-04-30 | 2021-10-14 | Workiva Inc. | Computing device for multiple cell linking |
US11153266B2 (en) | 2004-03-16 | 2021-10-19 | Icontrol Networks, Inc. | Gateway registry methods and systems |
CN113608895A (en) * | 2021-08-06 | 2021-11-05 | 湖南快乐阳光互动娱乐传媒有限公司 | Web backend data access method and system |
US11182060B2 (en) | 2004-03-16 | 2021-11-23 | Icontrol Networks, Inc. | Networked touchscreen with integrated interfaces |
US11201755B2 (en) | 2004-03-16 | 2021-12-14 | Icontrol Networks, Inc. | Premises system management using status signal |
US11212192B2 (en) | 2007-06-12 | 2021-12-28 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11218878B2 (en) | 2007-06-12 | 2022-01-04 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11237714B2 (en) | 2007-06-12 | 2022-02-01 | Control Networks, Inc. | Control system user interface |
US11240059B2 (en) | 2010-12-20 | 2022-02-01 | Icontrol Networks, Inc. | Defining and implementing sensor triggered response rules |
US11244545B2 (en) | 2004-03-16 | 2022-02-08 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US11258625B2 (en) | 2008-08-11 | 2022-02-22 | Icontrol Networks, Inc. | Mobile premises automation platform |
US11277465B2 (en) | 2004-03-16 | 2022-03-15 | Icontrol Networks, Inc. | Generating risk profile using data of home monitoring and security system |
US11310199B2 (en) | 2004-03-16 | 2022-04-19 | Icontrol Networks, Inc. | Premises management configuration and control |
US11316753B2 (en) | 2007-06-12 | 2022-04-26 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11316958B2 (en) | 2008-08-11 | 2022-04-26 | Icontrol Networks, Inc. | Virtual device systems and methods |
US11343380B2 (en) | 2004-03-16 | 2022-05-24 | Icontrol Networks, Inc. | Premises system automation |
US11368327B2 (en) | 2008-08-11 | 2022-06-21 | Icontrol Networks, Inc. | Integrated cloud system for premises automation |
US11398147B2 (en) | 2010-09-28 | 2022-07-26 | Icontrol Networks, Inc. | Method, system and apparatus for automated reporting of account and sensor zone information to a central station |
US11405463B2 (en) | 2014-03-03 | 2022-08-02 | Icontrol Networks, Inc. | Media content management |
US11423756B2 (en) | 2007-06-12 | 2022-08-23 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11424980B2 (en) | 2005-03-16 | 2022-08-23 | Icontrol Networks, Inc. | Forming a security network including integrated security system components |
US11451409B2 (en) | 2005-03-16 | 2022-09-20 | Icontrol Networks, Inc. | Security network integrating security system and network devices |
US11489812B2 (en) | 2004-03-16 | 2022-11-01 | Icontrol Networks, Inc. | Forming a security network including integrated security system components and network devices |
US11496568B2 (en) | 2005-03-16 | 2022-11-08 | Icontrol Networks, Inc. | Security system with networked touchscreen |
CN115544443A (en) * | 2022-12-01 | 2022-12-30 | 西安葡萄城软件有限公司 | Method and device for calculating asynchronous formula in spreadsheet |
US11582065B2 (en) | 2007-06-12 | 2023-02-14 | Icontrol Networks, Inc. | Systems and methods for device communication |
US11586603B1 (en) | 2018-05-23 | 2023-02-21 | Amazon Technologies, Inc. | Index sheets for robust spreadsheet-based applications |
US11601810B2 (en) | 2007-06-12 | 2023-03-07 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11615697B2 (en) | 2005-03-16 | 2023-03-28 | Icontrol Networks, Inc. | Premise management systems and methods |
US11625527B1 (en) * | 2021-11-17 | 2023-04-11 | Oracle International Corporation | Method and system for creating, retrieving, and editing web service attachments in spreadsheets |
US11630947B2 (en) | 2015-11-02 | 2023-04-18 | Microsoft Technology Licensing, Llc | Compound data objects |
US11646907B2 (en) | 2007-06-12 | 2023-05-09 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11677577B2 (en) | 2004-03-16 | 2023-06-13 | Icontrol Networks, Inc. | Premises system management using status signal |
US11695774B2 (en) | 2020-06-24 | 2023-07-04 | Polybit Inc. | System and method for federated identity functionality for API development |
US11700142B2 (en) | 2005-03-16 | 2023-07-11 | Icontrol Networks, Inc. | Security network integrating security system and network devices |
US11706045B2 (en) | 2005-03-16 | 2023-07-18 | Icontrol Networks, Inc. | Modular electronic display platform |
US11706279B2 (en) | 2007-01-24 | 2023-07-18 | Icontrol Networks, Inc. | Methods and systems for data communication |
US11729255B2 (en) | 2008-08-11 | 2023-08-15 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US11726753B2 (en) | 2016-12-03 | 2023-08-15 | Thomas STACHURA | Spreadsheet-based software application development |
US11750414B2 (en) | 2010-12-16 | 2023-09-05 | Icontrol Networks, Inc. | Bidirectional security sensor communication for a premises security system |
US11758026B2 (en) | 2008-08-11 | 2023-09-12 | Icontrol Networks, Inc. | Virtual device systems and methods |
US11783120B2 (en) | 2015-08-26 | 2023-10-10 | Roar Software Pty Ltd. | System and process for generating an internet application |
US11792036B2 (en) | 2008-08-11 | 2023-10-17 | Icontrol Networks, Inc. | Mobile premises automation platform |
US11792330B2 (en) | 2005-03-16 | 2023-10-17 | Icontrol Networks, Inc. | Communication and automation in a premises management system |
US11811845B2 (en) | 2004-03-16 | 2023-11-07 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11816323B2 (en) | 2008-06-25 | 2023-11-14 | Icontrol Networks, Inc. | Automation system user interface |
US11822637B2 (en) * | 2018-10-18 | 2023-11-21 | Oracle International Corporation | Adaptive authentication in spreadsheet interface integrated with web service |
US11831462B2 (en) | 2007-08-24 | 2023-11-28 | Icontrol Networks, Inc. | Controlling data routing in premises management systems |
US11848976B2 (en) * | 2020-06-30 | 2023-12-19 | Oracle International Corporation | Custom action invocation in a speadsheet integrated with web services |
US11916870B2 (en) | 2004-03-16 | 2024-02-27 | Icontrol Networks, Inc. | Gateway registry methods and systems |
US11916928B2 (en) | 2008-01-24 | 2024-02-27 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US20240070383A1 (en) * | 2022-08-29 | 2024-02-29 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
US12003387B2 (en) | 2012-06-27 | 2024-06-04 | Comcast Cable Communications, Llc | Control system user interface |
US12026484B2 (en) | 2017-09-25 | 2024-07-02 | Amazon Technologies, Inc. | Automated generation of software applications using analysis of submitted content items |
US12039259B2 (en) | 2017-11-20 | 2024-07-16 | Amazon Technologies, Inc. | Network-accessible data management service with web-of-sheets data model |
US12063221B2 (en) | 2006-06-12 | 2024-08-13 | Icontrol Networks, Inc. | Activation of gateway device |
US12063220B2 (en) | 2004-03-16 | 2024-08-13 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US12135934B2 (en) * | 2022-05-18 | 2024-11-05 | Kohlberg Kravis Roberts & Co. L.P. | Methods and systems for dynamic report generation |
US12184443B2 (en) | 2007-06-12 | 2024-12-31 | Icontrol Networks, Inc. | Controlling data routing among networks |
US12223262B1 (en) | 2019-03-27 | 2025-02-11 | Amazon Technologies, Inc. | Expressions management service for data sheet-based applications |
US12283172B2 (en) | 2007-06-12 | 2025-04-22 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US12333241B2 (en) | 2023-08-16 | 2025-06-17 | Microsoft Technology Licensing, Llc | Integrating non-native dependencies in spreadsheet applications |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030226105A1 (en) * | 2002-05-29 | 2003-12-04 | Mattias Waldau | Method in connection with a spreadsheet program |
US20090171999A1 (en) * | 2007-12-27 | 2009-07-02 | Cloudscale Inc. | System and Methodology for Parallel Stream Processing |
US20090183062A1 (en) * | 2008-01-11 | 2009-07-16 | Joseph Pally | Activatable table within webpages in a recursive browser system |
US20100145902A1 (en) * | 2008-12-09 | 2010-06-10 | Ita Software, Inc. | Methods and systems to train models to extract and integrate information from data sources |
US20100312788A1 (en) * | 2007-10-26 | 2010-12-09 | Commonwealth Scientific And Industrial Research Or | Method and system for information retrieval and processing |
US20110041141A1 (en) * | 2009-08-13 | 2011-02-17 | Harm Michael W | Virtual Object Indirection in a Hosted Computer Environment |
US20110040824A1 (en) * | 2009-08-13 | 2011-02-17 | Google Inc. | Shared Server-Side Macros |
US20110078708A1 (en) * | 2009-09-30 | 2011-03-31 | Sap Ag | System and Method for Communication Between Portal Applications and Portlet Containers |
US20110093514A1 (en) * | 2009-10-15 | 2011-04-21 | International Business Machines Corporation | System and Method for the Derivation and Application of Sub-iteration Contexts in a Transformation Operation in a Data Integration System |
US20120011195A1 (en) * | 2010-07-11 | 2012-01-12 | Microsoft Corporation | Url-facilitated access to spreadsheet elements |
-
2012
- 2012-11-09 US US13/672,704 patent/US20140136936A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030226105A1 (en) * | 2002-05-29 | 2003-12-04 | Mattias Waldau | Method in connection with a spreadsheet program |
US20100312788A1 (en) * | 2007-10-26 | 2010-12-09 | Commonwealth Scientific And Industrial Research Or | Method and system for information retrieval and processing |
US20090171999A1 (en) * | 2007-12-27 | 2009-07-02 | Cloudscale Inc. | System and Methodology for Parallel Stream Processing |
US20090183062A1 (en) * | 2008-01-11 | 2009-07-16 | Joseph Pally | Activatable table within webpages in a recursive browser system |
US20100145902A1 (en) * | 2008-12-09 | 2010-06-10 | Ita Software, Inc. | Methods and systems to train models to extract and integrate information from data sources |
US20110041141A1 (en) * | 2009-08-13 | 2011-02-17 | Harm Michael W | Virtual Object Indirection in a Hosted Computer Environment |
US20110040824A1 (en) * | 2009-08-13 | 2011-02-17 | Google Inc. | Shared Server-Side Macros |
US20110078708A1 (en) * | 2009-09-30 | 2011-03-31 | Sap Ag | System and Method for Communication Between Portal Applications and Portlet Containers |
US20110093514A1 (en) * | 2009-10-15 | 2011-04-21 | International Business Machines Corporation | System and Method for the Derivation and Application of Sub-iteration Contexts in a Transformation Operation in a Data Integration System |
US20120011195A1 (en) * | 2010-07-11 | 2012-01-12 | Microsoft Corporation | Url-facilitated access to spreadsheet elements |
Non-Patent Citations (3)
Title |
---|
Microsoft, Interacting with the Excel Web Services API for SharePoint Server 2007", published online February 15, 2010, at https://msdn.microsoft.com/en-us/library/office/ff384274(v=office.12).aspx * |
of Microsoft, "Manage Excel Services trusted locations (SharePoint Server 2010)", published on line 11/14/2011, at https://technet.microsoft.com/en-us/library/ff191194(v=office.14).aspx * |
Webb, Chris Webb's BI Blog, "Using the WebService() function in Excel 2013, published online on 7/31/2012, at https://blog.crossjoin.co.uk/2012/07/31/using-the-webservice-function-in-excel-2013/ * |
Cited By (231)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10559193B2 (en) | 2002-02-01 | 2020-02-11 | Comcast Cable Communications, Llc | Premises management systems |
US11182060B2 (en) | 2004-03-16 | 2021-11-23 | Icontrol Networks, Inc. | Networked touchscreen with integrated interfaces |
US11159484B2 (en) | 2004-03-16 | 2021-10-26 | Icontrol Networks, Inc. | Forming a security network including integrated security system components and network devices |
US11043112B2 (en) | 2004-03-16 | 2021-06-22 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US12063220B2 (en) | 2004-03-16 | 2024-08-13 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11037433B2 (en) | 2004-03-16 | 2021-06-15 | Icontrol Networks, Inc. | Management of a security system at a premises |
US11991306B2 (en) | 2004-03-16 | 2024-05-21 | Icontrol Networks, Inc. | Premises system automation |
US11916870B2 (en) | 2004-03-16 | 2024-02-27 | Icontrol Networks, Inc. | Gateway registry methods and systems |
US11893874B2 (en) | 2004-03-16 | 2024-02-06 | Icontrol Networks, Inc. | Networked touchscreen with integrated interfaces |
US10992784B2 (en) | 2004-03-16 | 2021-04-27 | Control Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11811845B2 (en) | 2004-03-16 | 2023-11-07 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11810445B2 (en) | 2004-03-16 | 2023-11-07 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US10979389B2 (en) | 2004-03-16 | 2021-04-13 | Icontrol Networks, Inc. | Premises management configuration and control |
US11153266B2 (en) | 2004-03-16 | 2021-10-19 | Icontrol Networks, Inc. | Gateway registry methods and systems |
US11184322B2 (en) | 2004-03-16 | 2021-11-23 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11782394B2 (en) | 2004-03-16 | 2023-10-10 | Icontrol Networks, Inc. | Automation system with mobile interface |
US10156831B2 (en) | 2004-03-16 | 2018-12-18 | Icontrol Networks, Inc. | Automation system with mobile interface |
US11757834B2 (en) | 2004-03-16 | 2023-09-12 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11175793B2 (en) | 2004-03-16 | 2021-11-16 | Icontrol Networks, Inc. | User interface in a premises network |
US10796557B2 (en) | 2004-03-16 | 2020-10-06 | Icontrol Networks, Inc. | Automation system user interface with three-dimensional display |
US10142166B2 (en) | 2004-03-16 | 2018-11-27 | Icontrol Networks, Inc. | Takeover of security network |
US10754304B2 (en) | 2004-03-16 | 2020-08-25 | Icontrol Networks, Inc. | Automation system with mobile interface |
US11410531B2 (en) | 2004-03-16 | 2022-08-09 | Icontrol Networks, Inc. | Automation system user interface with three-dimensional display |
US12253833B2 (en) | 2004-03-16 | 2025-03-18 | Icontrol Networks, Inc. | Automation system with mobile interface |
US10735249B2 (en) | 2004-03-16 | 2020-08-04 | Icontrol Networks, Inc. | Management of a security system at a premises |
US10890881B2 (en) | 2004-03-16 | 2021-01-12 | Icontrol Networks, Inc. | Premises management networking |
US11677577B2 (en) | 2004-03-16 | 2023-06-13 | Icontrol Networks, Inc. | Premises system management using status signal |
US11656667B2 (en) | 2004-03-16 | 2023-05-23 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US10691295B2 (en) | 2004-03-16 | 2020-06-23 | Icontrol Networks, Inc. | User interface in a premises network |
US11625008B2 (en) | 2004-03-16 | 2023-04-11 | Icontrol Networks, Inc. | Premises management networking |
US11626006B2 (en) | 2004-03-16 | 2023-04-11 | Icontrol Networks, Inc. | Management of a security system at a premises |
US10692356B2 (en) | 2004-03-16 | 2020-06-23 | Icontrol Networks, Inc. | Control system user interface |
US11601397B2 (en) | 2004-03-16 | 2023-03-07 | Icontrol Networks, Inc. | Premises management configuration and control |
US11201755B2 (en) | 2004-03-16 | 2021-12-14 | Icontrol Networks, Inc. | Premises system management using status signal |
US11588787B2 (en) | 2004-03-16 | 2023-02-21 | Icontrol Networks, Inc. | Premises management configuration and control |
US11537186B2 (en) | 2004-03-16 | 2022-12-27 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US11244545B2 (en) | 2004-03-16 | 2022-02-08 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US11489812B2 (en) | 2004-03-16 | 2022-11-01 | Icontrol Networks, Inc. | Forming a security network including integrated security system components and network devices |
US11277465B2 (en) | 2004-03-16 | 2022-03-15 | Icontrol Networks, Inc. | Generating risk profile using data of home monitoring and security system |
US11449012B2 (en) | 2004-03-16 | 2022-09-20 | Icontrol Networks, Inc. | Premises management networking |
US11310199B2 (en) | 2004-03-16 | 2022-04-19 | Icontrol Networks, Inc. | Premises management configuration and control |
US11082395B2 (en) | 2004-03-16 | 2021-08-03 | Icontrol Networks, Inc. | Premises management configuration and control |
US11343380B2 (en) | 2004-03-16 | 2022-05-24 | Icontrol Networks, Inc. | Premises system automation |
US10447491B2 (en) | 2004-03-16 | 2019-10-15 | Icontrol Networks, Inc. | Premises system management using status signal |
US11368429B2 (en) | 2004-03-16 | 2022-06-21 | Icontrol Networks, Inc. | Premises management configuration and control |
US11378922B2 (en) | 2004-03-16 | 2022-07-05 | Icontrol Networks, Inc. | Automation system with mobile interface |
US10380871B2 (en) | 2005-03-16 | 2019-08-13 | Icontrol Networks, Inc. | Control system user interface |
US10156959B2 (en) | 2005-03-16 | 2018-12-18 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US11367340B2 (en) | 2005-03-16 | 2022-06-21 | Icontrol Networks, Inc. | Premise management systems and methods |
US12277853B2 (en) | 2005-03-16 | 2025-04-15 | Icontrol Networks, Inc. | Gateway integrated with premises security system |
US10999254B2 (en) | 2005-03-16 | 2021-05-04 | Icontrol Networks, Inc. | System for data routing in networks |
US11424980B2 (en) | 2005-03-16 | 2022-08-23 | Icontrol Networks, Inc. | Forming a security network including integrated security system components |
US11824675B2 (en) | 2005-03-16 | 2023-11-21 | Icontrol Networks, Inc. | Networked touchscreen with integrated interfaces |
US11113950B2 (en) | 2005-03-16 | 2021-09-07 | Icontrol Networks, Inc. | Gateway integrated with premises security system |
US10930136B2 (en) | 2005-03-16 | 2021-02-23 | Icontrol Networks, Inc. | Premise management systems and methods |
US11451409B2 (en) | 2005-03-16 | 2022-09-20 | Icontrol Networks, Inc. | Security network integrating security system and network devices |
US11496568B2 (en) | 2005-03-16 | 2022-11-08 | Icontrol Networks, Inc. | Security system with networked touchscreen |
US11595364B2 (en) | 2005-03-16 | 2023-02-28 | Icontrol Networks, Inc. | System for data routing in networks |
US11615697B2 (en) | 2005-03-16 | 2023-03-28 | Icontrol Networks, Inc. | Premise management systems and methods |
US10062245B2 (en) | 2005-03-16 | 2018-08-28 | Icontrol Networks, Inc. | Cross-client sensor user interface in an integrated security network |
US11792330B2 (en) | 2005-03-16 | 2023-10-17 | Icontrol Networks, Inc. | Communication and automation in a premises management system |
US11700142B2 (en) | 2005-03-16 | 2023-07-11 | Icontrol Networks, Inc. | Security network integrating security system and network devices |
US10721087B2 (en) | 2005-03-16 | 2020-07-21 | Icontrol Networks, Inc. | Method for networked touchscreen with integrated interfaces |
US10091014B2 (en) | 2005-03-16 | 2018-10-02 | Icontrol Networks, Inc. | Integrated security network with security alarm signaling system |
US11706045B2 (en) | 2005-03-16 | 2023-07-18 | Icontrol Networks, Inc. | Modular electronic display platform |
US10841381B2 (en) | 2005-03-16 | 2020-11-17 | Icontrol Networks, Inc. | Security system with networked touchscreen |
US10127801B2 (en) | 2005-03-16 | 2018-11-13 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US10785319B2 (en) | 2006-06-12 | 2020-09-22 | Icontrol Networks, Inc. | IP device discovery systems and methods |
US11418518B2 (en) | 2006-06-12 | 2022-08-16 | Icontrol Networks, Inc. | Activation of gateway device |
US12063221B2 (en) | 2006-06-12 | 2024-08-13 | Icontrol Networks, Inc. | Activation of gateway device |
US10616244B2 (en) | 2006-06-12 | 2020-04-07 | Icontrol Networks, Inc. | Activation of gateway device |
US10225314B2 (en) | 2007-01-24 | 2019-03-05 | Icontrol Networks, Inc. | Methods and systems for improved system performance |
US11412027B2 (en) | 2007-01-24 | 2022-08-09 | Icontrol Networks, Inc. | Methods and systems for data communication |
US11418572B2 (en) | 2007-01-24 | 2022-08-16 | Icontrol Networks, Inc. | Methods and systems for improved system performance |
US11706279B2 (en) | 2007-01-24 | 2023-07-18 | Icontrol Networks, Inc. | Methods and systems for data communication |
US12120171B2 (en) | 2007-01-24 | 2024-10-15 | Icontrol Networks, Inc. | Methods and systems for data communication |
US10142392B2 (en) | 2007-01-24 | 2018-11-27 | Icontrol Networks, Inc. | Methods and systems for improved system performance |
US11194320B2 (en) | 2007-02-28 | 2021-12-07 | Icontrol Networks, Inc. | Method and system for managing communication connectivity |
US10657794B1 (en) | 2007-02-28 | 2020-05-19 | Icontrol Networks, Inc. | Security, monitoring and automation controller access and use of legacy security control panel information |
US11809174B2 (en) | 2007-02-28 | 2023-11-07 | Icontrol Networks, Inc. | Method and system for managing communication connectivity |
US10747216B2 (en) | 2007-02-28 | 2020-08-18 | Icontrol Networks, Inc. | Method and system for communicating with and controlling an alarm system from a remote server |
US10672254B2 (en) | 2007-04-23 | 2020-06-02 | Icontrol Networks, Inc. | Method and system for providing alternate network access |
US11132888B2 (en) | 2007-04-23 | 2021-09-28 | Icontrol Networks, Inc. | Method and system for providing alternate network access |
US11663902B2 (en) | 2007-04-23 | 2023-05-30 | Icontrol Networks, Inc. | Method and system for providing alternate network access |
US10140840B2 (en) | 2007-04-23 | 2018-11-27 | Icontrol Networks, Inc. | Method and system for providing alternate network access |
US11237714B2 (en) | 2007-06-12 | 2022-02-01 | Control Networks, Inc. | Control system user interface |
US10079839B1 (en) | 2007-06-12 | 2018-09-18 | Icontrol Networks, Inc. | Activation of gateway device |
US12284057B2 (en) | 2007-06-12 | 2025-04-22 | Icontrol Networks, Inc. | Systems and methods for device communication |
US12283172B2 (en) | 2007-06-12 | 2025-04-22 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11722896B2 (en) | 2007-06-12 | 2023-08-08 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US12250547B2 (en) | 2007-06-12 | 2025-03-11 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10444964B2 (en) | 2007-06-12 | 2019-10-15 | Icontrol Networks, Inc. | Control system user interface |
US10498830B2 (en) | 2007-06-12 | 2019-12-03 | Icontrol Networks, Inc. | Wi-Fi-to-serial encapsulation in systems |
US10142394B2 (en) | 2007-06-12 | 2018-11-27 | Icontrol Networks, Inc. | Generating risk profile using data of home monitoring and security system |
US10200504B2 (en) | 2007-06-12 | 2019-02-05 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US12184443B2 (en) | 2007-06-12 | 2024-12-31 | Icontrol Networks, Inc. | Controlling data routing among networks |
US11423756B2 (en) | 2007-06-12 | 2022-08-23 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10389736B2 (en) | 2007-06-12 | 2019-08-20 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11089122B2 (en) | 2007-06-12 | 2021-08-10 | Icontrol Networks, Inc. | Controlling data routing among networks |
US11212192B2 (en) | 2007-06-12 | 2021-12-28 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11218878B2 (en) | 2007-06-12 | 2022-01-04 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11632308B2 (en) | 2007-06-12 | 2023-04-18 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10423309B2 (en) | 2007-06-12 | 2019-09-24 | Icontrol Networks, Inc. | Device integration framework |
US10051078B2 (en) | 2007-06-12 | 2018-08-14 | Icontrol Networks, Inc. | WiFi-to-serial encapsulation in systems |
US11646907B2 (en) | 2007-06-12 | 2023-05-09 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10237237B2 (en) | 2007-06-12 | 2019-03-19 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10666523B2 (en) | 2007-06-12 | 2020-05-26 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11625161B2 (en) | 2007-06-12 | 2023-04-11 | Icontrol Networks, Inc. | Control system user interface |
US11894986B2 (en) | 2007-06-12 | 2024-02-06 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10616075B2 (en) | 2007-06-12 | 2020-04-07 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11316753B2 (en) | 2007-06-12 | 2022-04-26 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11611568B2 (en) | 2007-06-12 | 2023-03-21 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11601810B2 (en) | 2007-06-12 | 2023-03-07 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US10313303B2 (en) | 2007-06-12 | 2019-06-04 | Icontrol Networks, Inc. | Forming a security network including integrated security system components and network devices |
US10382452B1 (en) | 2007-06-12 | 2019-08-13 | Icontrol Networks, Inc. | Communication protocols in integrated systems |
US11582065B2 (en) | 2007-06-12 | 2023-02-14 | Icontrol Networks, Inc. | Systems and methods for device communication |
US10339791B2 (en) | 2007-06-12 | 2019-07-02 | Icontrol Networks, Inc. | Security network integrated with premise security system |
US10365810B2 (en) | 2007-06-12 | 2019-07-30 | Icontrol Networks, Inc. | Control system user interface |
US10523689B2 (en) | 2007-06-12 | 2019-12-31 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11815969B2 (en) | 2007-08-10 | 2023-11-14 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US11831462B2 (en) | 2007-08-24 | 2023-11-28 | Icontrol Networks, Inc. | Controlling data routing in premises management systems |
US12301379B2 (en) | 2007-08-24 | 2025-05-13 | Icontrol Networks, Inc. | Controlling data routing in premises management systems |
US11916928B2 (en) | 2008-01-24 | 2024-02-27 | Icontrol Networks, Inc. | Communication protocols over internet protocol (IP) networks |
US11816323B2 (en) | 2008-06-25 | 2023-11-14 | Icontrol Networks, Inc. | Automation system user interface |
US11258625B2 (en) | 2008-08-11 | 2022-02-22 | Icontrol Networks, Inc. | Mobile premises automation platform |
US11190578B2 (en) | 2008-08-11 | 2021-11-30 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US12341865B2 (en) | 2008-08-11 | 2025-06-24 | Icontrol Networks, Inc. | Virtual device systems and methods |
US11758026B2 (en) | 2008-08-11 | 2023-09-12 | Icontrol Networks, Inc. | Virtual device systems and methods |
US11729255B2 (en) | 2008-08-11 | 2023-08-15 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US11316958B2 (en) | 2008-08-11 | 2022-04-26 | Icontrol Networks, Inc. | Virtual device systems and methods |
US11368327B2 (en) | 2008-08-11 | 2022-06-21 | Icontrol Networks, Inc. | Integrated cloud system for premises automation |
US20170070563A1 (en) * | 2008-08-11 | 2017-03-09 | Ken Sundermeyer | Data model for home automation |
US10530839B2 (en) | 2008-08-11 | 2020-01-07 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US11962672B2 (en) | 2008-08-11 | 2024-04-16 | Icontrol Networks, Inc. | Virtual device systems and methods |
US12267385B2 (en) | 2008-08-11 | 2025-04-01 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US12244663B2 (en) | 2008-08-11 | 2025-03-04 | Icontrol Networks, Inc. | Integrated cloud system with lightweight gateway for premises automation |
US11711234B2 (en) | 2008-08-11 | 2023-07-25 | Icontrol Networks, Inc. | Integrated cloud system for premises automation |
US11616659B2 (en) | 2008-08-11 | 2023-03-28 | Icontrol Networks, Inc. | Integrated cloud system for premises automation |
US11792036B2 (en) | 2008-08-11 | 2023-10-17 | Icontrol Networks, Inc. | Mobile premises automation platform |
US11641391B2 (en) | 2008-08-11 | 2023-05-02 | Icontrol Networks Inc. | Integrated cloud system with lightweight gateway for premises automation |
US10522026B2 (en) | 2008-08-11 | 2019-12-31 | Icontrol Networks, Inc. | Automation system user interface with three-dimensional display |
US20160274759A1 (en) | 2008-08-25 | 2016-09-22 | Paul J. Dawes | Security system with networked touchscreen and gateway |
US10375253B2 (en) | 2008-08-25 | 2019-08-06 | Icontrol Networks, Inc. | Security system with networked touchscreen and gateway |
US11856502B2 (en) | 2009-04-30 | 2023-12-26 | Icontrol Networks, Inc. | Method, system and apparatus for automated inventory reporting of security, monitoring and automation hardware and software at customer premises |
US11129084B2 (en) | 2009-04-30 | 2021-09-21 | Icontrol Networks, Inc. | Notification of event subsequent to communication failure with security system |
US11778534B2 (en) | 2009-04-30 | 2023-10-03 | Icontrol Networks, Inc. | Hardware configurable security, monitoring and automation controller having modular communication protocol interfaces |
US10237806B2 (en) | 2009-04-30 | 2019-03-19 | Icontrol Networks, Inc. | Activation of a home automation controller |
US11284331B2 (en) | 2009-04-30 | 2022-03-22 | Icontrol Networks, Inc. | Server-based notification of alarm event subsequent to communication failure with armed security system |
US10275999B2 (en) | 2009-04-30 | 2019-04-30 | Icontrol Networks, Inc. | Server-based notification of alarm event subsequent to communication failure with armed security system |
US11601865B2 (en) | 2009-04-30 | 2023-03-07 | Icontrol Networks, Inc. | Server-based notification of alarm event subsequent to communication failure with armed security system |
US10674428B2 (en) | 2009-04-30 | 2020-06-02 | Icontrol Networks, Inc. | Hardware configurable security, monitoring and automation controller having modular communication protocol interfaces |
US11997584B2 (en) | 2009-04-30 | 2024-05-28 | Icontrol Networks, Inc. | Activation of a home automation controller |
US10813034B2 (en) | 2009-04-30 | 2020-10-20 | Icontrol Networks, Inc. | Method, system and apparatus for management of applications for an SMA controller |
US11553399B2 (en) | 2009-04-30 | 2023-01-10 | Icontrol Networks, Inc. | Custom content for premises management |
US11223998B2 (en) | 2009-04-30 | 2022-01-11 | Icontrol Networks, Inc. | Security, monitoring and automation controller access and use of legacy security control panel information |
US11665617B2 (en) | 2009-04-30 | 2023-05-30 | Icontrol Networks, Inc. | Server-based notification of alarm event subsequent to communication failure with armed security system |
US11356926B2 (en) | 2009-04-30 | 2022-06-07 | Icontrol Networks, Inc. | Hardware configurable security, monitoring and automation controller having modular communication protocol interfaces |
US12127095B2 (en) | 2009-04-30 | 2024-10-22 | Icontrol Networks, Inc. | Custom content for premises management |
US10332363B2 (en) | 2009-04-30 | 2019-06-25 | Icontrol Networks, Inc. | Controller and interface for home security, monitoring and automation having customizable audio alerts for SMA events |
US12245131B2 (en) | 2009-04-30 | 2025-03-04 | Icontrol Networks, Inc. | Security, monitoring and automation controller access and use of legacy security control panel information |
US11398147B2 (en) | 2010-09-28 | 2022-07-26 | Icontrol Networks, Inc. | Method, system and apparatus for automated reporting of account and sensor zone information to a central station |
US10062273B2 (en) | 2010-09-28 | 2018-08-28 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US10127802B2 (en) | 2010-09-28 | 2018-11-13 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US11900790B2 (en) | 2010-09-28 | 2024-02-13 | Icontrol Networks, Inc. | Method, system and apparatus for automated reporting of account and sensor zone information to a central station |
US10223903B2 (en) | 2010-09-28 | 2019-03-05 | Icontrol Networks, Inc. | Integrated security system with parallel processing architecture |
US11750414B2 (en) | 2010-12-16 | 2023-09-05 | Icontrol Networks, Inc. | Bidirectional security sensor communication for a premises security system |
US12088425B2 (en) | 2010-12-16 | 2024-09-10 | Icontrol Networks, Inc. | Bidirectional security sensor communication for a premises security system |
US10741057B2 (en) | 2010-12-17 | 2020-08-11 | Icontrol Networks, Inc. | Method and system for processing security event data |
US11341840B2 (en) | 2010-12-17 | 2022-05-24 | Icontrol Networks, Inc. | Method and system for processing security event data |
US12100287B2 (en) | 2010-12-17 | 2024-09-24 | Icontrol Networks, Inc. | Method and system for processing security event data |
US10078958B2 (en) | 2010-12-17 | 2018-09-18 | Icontrol Networks, Inc. | Method and system for logging security event data |
US12021649B2 (en) | 2010-12-20 | 2024-06-25 | Icontrol Networks, Inc. | Defining and implementing sensor triggered response rules |
US11240059B2 (en) | 2010-12-20 | 2022-02-01 | Icontrol Networks, Inc. | Defining and implementing sensor triggered response rules |
US12003387B2 (en) | 2012-06-27 | 2024-06-04 | Comcast Cable Communications, Llc | Control system user interface |
US10210151B2 (en) * | 2012-12-17 | 2019-02-19 | Thomson Reuters (Grc) Llc | Dynamic function builder |
US20140173400A1 (en) * | 2012-12-17 | 2014-06-19 | Thomson Reuters Global Resources | Dynamic function builder |
US11296950B2 (en) | 2013-06-27 | 2022-04-05 | Icontrol Networks, Inc. | Control system user interface |
US10348575B2 (en) | 2013-06-27 | 2019-07-09 | Icontrol Networks, Inc. | Control system user interface |
US20150026075A1 (en) * | 2013-07-16 | 2015-01-22 | Microsoft Corporation | Control of crm data based on spreadsheet actions |
US9946804B2 (en) * | 2013-08-19 | 2018-04-17 | Business Objects Software Ltd | Displaying historical data associated with data values within business intelligence reports |
US20150052099A1 (en) * | 2013-08-19 | 2015-02-19 | Business Objects Software Ltd | Displaying historical data associated with data values within business intelligence reports |
US11405463B2 (en) | 2014-03-03 | 2022-08-02 | Icontrol Networks, Inc. | Media content management |
US11146637B2 (en) | 2014-03-03 | 2021-10-12 | Icontrol Networks, Inc. | Media content management |
US11943301B2 (en) | 2014-03-03 | 2024-03-26 | Icontrol Networks, Inc. | Media content management |
US20210319172A1 (en) * | 2015-04-30 | 2021-10-14 | Workiva Inc. | Computing device for multiple cell linking |
WO2016201033A1 (en) * | 2015-06-09 | 2016-12-15 | Icontrol Networks, Inc. | Data model for home automation |
US10891432B2 (en) * | 2015-08-26 | 2021-01-12 | Roar Software Pty Ltd. | System and process for generating an internet application |
US20170060830A1 (en) * | 2015-08-26 | 2017-03-02 | YTML Consulting Pty Ltd | System and process for generating an internet application |
US11783120B2 (en) | 2015-08-26 | 2023-10-10 | Roar Software Pty Ltd. | System and process for generating an internet application |
US11630947B2 (en) | 2015-11-02 | 2023-04-18 | Microsoft Technology Licensing, Llc | Compound data objects |
CN106878243A (en) * | 2016-06-06 | 2017-06-20 | 阿里巴巴集团控股有限公司 | Method for processing business and device |
US10701160B2 (en) * | 2016-07-28 | 2020-06-30 | Polybit Inc. | System and method for a unified interface to networked webservices |
CN107526755A (en) * | 2016-09-27 | 2017-12-29 | 腾讯科技(深圳)有限公司 | The processing method and processing device of data |
US10877736B2 (en) | 2016-12-03 | 2020-12-29 | Thomas STACHURA | Spreadsheet-based software application development |
US10540153B2 (en) * | 2016-12-03 | 2020-01-21 | Thomas STACHURA | Spreadsheet-based software application development |
US11726753B2 (en) | 2016-12-03 | 2023-08-15 | Thomas STACHURA | Spreadsheet-based software application development |
US11893366B2 (en) | 2016-12-03 | 2024-02-06 | Thomas STACHURA | Spreadsheet-based software application development |
US11113041B2 (en) | 2016-12-03 | 2021-09-07 | Thomas STACHURA | Spreadsheet-based software application development |
US11442707B2 (en) | 2016-12-03 | 2022-09-13 | Thomas STACHURA | Spreadsheet-based software application development |
US11080291B2 (en) * | 2017-08-02 | 2021-08-03 | Sap Se | Downloading visualization data between computer systems |
US12026484B2 (en) | 2017-09-25 | 2024-07-02 | Amazon Technologies, Inc. | Automated generation of software applications using analysis of submitted content items |
US12039259B2 (en) | 2017-11-20 | 2024-07-16 | Amazon Technologies, Inc. | Network-accessible data management service with web-of-sheets data model |
US11709852B2 (en) * | 2017-12-04 | 2023-07-25 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US12124467B2 (en) * | 2017-12-04 | 2024-10-22 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US20250005032A1 (en) * | 2017-12-04 | 2025-01-02 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US20210248134A1 (en) * | 2017-12-04 | 2021-08-12 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US20230385295A1 (en) * | 2017-12-04 | 2023-11-30 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US10705805B1 (en) * | 2017-12-12 | 2020-07-07 | Amazon Technologies, Inc. | Application authoring using web-of-sheets data model |
US11740877B2 (en) | 2017-12-12 | 2023-08-29 | Amazon Technologies, Inc. | Application authoring using web-of-sheets data model |
CN108038213A (en) * | 2017-12-21 | 2018-05-15 | 中国农业银行股份有限公司 | A kind of method of data processing, client, server and system |
US11586603B1 (en) | 2018-05-23 | 2023-02-21 | Amazon Technologies, Inc. | Index sheets for robust spreadsheet-based applications |
US11822637B2 (en) * | 2018-10-18 | 2023-11-21 | Oracle International Corporation | Adaptive authentication in spreadsheet interface integrated with web service |
CN109558171A (en) * | 2018-12-04 | 2019-04-02 | 白华 | It is a kind of to define and control computer method using electrical form |
US12223262B1 (en) | 2019-03-27 | 2025-02-11 | Amazon Technologies, Inc. | Expressions management service for data sheet-based applications |
CN110675133A (en) * | 2019-09-30 | 2020-01-10 | 北京金山安全软件有限公司 | Red packet robbing method and device, electronic equipment and readable storage medium |
US11695774B2 (en) | 2020-06-24 | 2023-07-04 | Polybit Inc. | System and method for federated identity functionality for API development |
US20240080354A1 (en) * | 2020-06-30 | 2024-03-07 | Oracle International Corporation | Providing bulk server-side custom actions for multiple rows of a client-side spread sheet |
US12393776B2 (en) * | 2020-06-30 | 2025-08-19 | Oracle International Corporation | Providing bulk server-side custom actions for multiple rows of a client-side spread sheet |
US11848976B2 (en) * | 2020-06-30 | 2023-12-19 | Oracle International Corporation | Custom action invocation in a speadsheet integrated with web services |
CN113608895A (en) * | 2021-08-06 | 2021-11-05 | 湖南快乐阳光互动娱乐传媒有限公司 | Web backend data access method and system |
US11625527B1 (en) * | 2021-11-17 | 2023-04-11 | Oracle International Corporation | Method and system for creating, retrieving, and editing web service attachments in spreadsheets |
US11995392B2 (en) * | 2021-11-17 | 2024-05-28 | Oracle International Corporation | Interfacing with web service attachments in spreadsheets |
US20230214578A1 (en) * | 2021-11-17 | 2023-07-06 | Oracle International Corporation | Interfacing with web service attachments in spreadsheets |
US12135934B2 (en) * | 2022-05-18 | 2024-11-05 | Kohlberg Kravis Roberts & Co. L.P. | Methods and systems for dynamic report generation |
US11966690B2 (en) * | 2022-08-29 | 2024-04-23 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
US11966796B2 (en) * | 2022-08-29 | 2024-04-23 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
US20240070383A1 (en) * | 2022-08-29 | 2024-02-29 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
US12026560B2 (en) | 2022-08-29 | 2024-07-02 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
US20240211684A1 (en) * | 2022-08-29 | 2024-06-27 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
CN115544443A (en) * | 2022-12-01 | 2022-12-30 | 西安葡萄城软件有限公司 | Method and device for calculating asynchronous formula in spreadsheet |
US12333241B2 (en) | 2023-08-16 | 2025-06-17 | Microsoft Technology Licensing, Llc | Integrating non-native dependencies in spreadsheet applications |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140136936A1 (en) | Spreadsheet functions to call rest api sources | |
US20140136937A1 (en) | Providing and procuring worksheet functions through an online marketplace | |
JP2020194567A (en) | Methods and systems for web content generation | |
EP2363995B1 (en) | Methods for optimizing a web content proxy server and devices thereof | |
US9875314B2 (en) | Content request with HTTP request-header rendering template that is independent of content storage location | |
US10599753B1 (en) | Document version control in collaborative environment | |
US9473592B2 (en) | Methods for optimizing a web content proxy server and devices thereof | |
EP3066587A1 (en) | Dynamically optimized content display | |
JP7258490B2 (en) | Dynamic content placeholder for microblogging posts | |
US10769367B1 (en) | Low-latency interactive user interface | |
CA2897480A1 (en) | Systems and methods for semantic url handling | |
CN106294417A (en) | A kind of data reordering method, device and electronic equipment | |
US20210240725A1 (en) | Methods, apparatuses and computer program products for data retrieval in a group-based communication system | |
EP2787454A1 (en) | Methods for optimizing a web content proxy server and devices thereof | |
US8650247B2 (en) | Four tier architecture for implementing thin clients | |
Pinandito et al. | Architectural Design of Representational State Transfer Application Programming Interface with Application-Level Base64-Encoding and Zlib Data Compression | |
CN103701910B (en) | Support the resource request processing method and Web browser of content center network | |
CN115062250A (en) | Page management method, server, development front end, portal webpage end and system | |
US20180198915A1 (en) | Interactive processing method and device | |
US20220051581A1 (en) | Personalized user education system | |
Viedma | Mobile web mashups | |
US20240386195A1 (en) | Table processing method, apparatus, device, storage medium and program product | |
Andersson et al. | REST API vs GraphQL: A literature and experimental study | |
US9544263B1 (en) | Method and system for sending an indication of response to an online post from a text message | |
CN110825760A (en) | A mobile terminal-based intelligence knowledge management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PATEL, KEYUR RAHUL;PRISH, SHAHAR;SADHU, SHUBHO;AND OTHERS;SIGNING DATES FROM 20121031 TO 20121108;REEL/FRAME:029267/0846 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034747/0417 Effective date: 20141014 Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:039025/0454 Effective date: 20141014 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |