DETAILED ACTION
This action is in response to the Amendment dated 21 July 2026. Claims 1-5, 7-9, 13-15 and 20 are amended. No claims have been added or cancelled. Claims 1-20 remain pending and have been considered below.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-20 are rejected under 35 U.S.C. 103 as being unpatentable over Carver (US 2020/0034681 A1) in view of Nag et al. (US 2021/0232537 A1).
As for independent claim 1, Carver teaches a computer program product comprising:
receiving a source spreadsheet including: a first input data set; and a first output data set, wherein the first input data set is processed according to one or more formulas of the source spreadsheet to generate the first output data set [(e.g. see Carver paragraphs 0028-0030) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs”].
identifying one or more directives defining functionality of the source spreadsheet including one or more actions taken to generate the first output data set from the first input data set, wherein at least one of the one or more actions includes application of the one or more formulas [(e.g. see Carver paragraphs 0030, 0036) ”the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
analyzing at least one of the first input data set, the first output data set, and the one or more directives to determine input data criteria including one or more of (i) permissible data types, (ii) permissible data values, (iii) permissible data positions derived from data positions included within at least one of the first input data set and the first output data set of the source spreadsheet, and (iv) one or more input directives describing at least one of a permissible data type, a permissible data value, and a permissible data position of the first input data set [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
Carver does not specifically teach automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, analyzing the sample output data set to identify an error, in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set or creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria. However, in the same field of invention, Nag teaches:
automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
analyzing the sample output data set to identify an error, in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria [(e.g. see Nag paragraphs 0077, 0080-0082, 0096, 0104) ”the file server 120 may receive a mapping file that designates the mapping between the fields (such as cells in spreadsheet) of the source file and the destination file. The file server 120 may store the mapping file … The destination file may include multiple fields and data values in different fields. A source file also may include multiple fields and data values. The mapping file may link a particular field in the destination file to a particular field in the source file … automatically detect the values need to be pasted to the mapping file 422 … the mapping file 422 has different types of cells. Each type stores different kinds of information. For example, cells such as “field name” stores actual values. Cells such as “name location” and “value location” store cell coordinates of the source file 412 or the destination file 432. Cells such as “expected vector” store yet another type of information that will be discussed below. The GUI 400 determines the type of cell that is being inputted and automatically generates values based on the type of cell … adjust the mapping file 422 when a new source file 412 is received”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add automatically generating a sample input data set in a spreadsheet-compatible format conforming to the input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, analyzing the sample output data set to identify an error, in response to identifying an error, updating the input data criteria based on a relationship between the error and the sample input data set and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for dependent claim 2, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
wherein the allowed input directive defines at least one of a permissible data type, a permissible data value, and a permissible data position [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for dependent claim 3, Carver and Nag teach the product as described in claim 1, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the allowed input directive is based on a relationship between the error and the sample input data set [(e.g. see Nag paragraph 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 4, Carver and Nag teach the product as described in claim 1, but Carver does not specifically teach the following limitations. However, Nag teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: using the input data criteria including the allowed input directive, automatically generating a second sample input data set including data in a spreadsheet-compatible format; processing the second sample input data set according to the one or more directive and the one or more formulas of the source spreadsheet to generate a second sample output data set and analyzing the second sample output data set to identify an error [(e.g. see Nag paragraphs 0096, 0109) ”Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios. Upon receiving a selection of a scenario, the file server 120 automatically populates the predetermined values to the cells specified in the scenario's rules … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar. This test may capture errors that are not captured in the value comparison test because the value comparison test reviews a file that is static. Values in the value comparison test may match, but when input values change as a user selects a different scenario, the scenario comparison check may discover that a multiplier is different in the formulas of the two files, or the direction of an arithmetic sign is reversed”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 5, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
further comprising code that, when executing on one or more computing devices, performs the step of: including the allowed input directive in the input data criteria [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for dependent claim 6, Carver and Nag teach the product as described in claim 5 and Carver further teaches:
wherein the allowed input directive describes one or more of the permissible data types and the permissible data values for a collection of cells of the source spreadsheet [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
As for dependent claim 7, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
wherein the allowed input directive defines a requirement that a first collection of cells and a second collection of cells have at least one of: an identical value and an identical size [(e.g. see Carver paragraph 0029) ”spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values. More information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8. The present invention also relies on cells formats for information, particularly in the case of a complex spreadsheet, as shown in 309 and 310 of FIG. 3 as further referenced specifically in the Flowchart of FIG. 7, which is described in more detail later in this specification. However, without regard to labels or formats, simply identifying formulas and cells referenced by formulas within a spreadsheet is a highly reliable way to get an initial indication of potential inputs and outputs”].
As for dependent claim 8, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
wherein the allowed input directive describes a relationship between a set of values of the source spreadsheet and one or more collections of cells [(e.g. see Carver paragraph 0031) ”FIG. 9 shows a cell that doesn't contain a formula, but instead contains an integer. The integer in 904 is referenced directly by formulas in the cells indicated as 901 and 902, and indirectly by the cells indicated as 903 and 911. As such, the system can use this small amount of information to identify the four integers in the cells below 904, as well as 904, as input cells. Similarly, since the formulas, in 901, 902, 903 and 911 reference the input cells noted previously, all that's need to turn those observations into a conversation].
As for dependent claim 9, Carver and Nag teach the product as described in claim 1 and Carver further teaches:
wherein the allowed input directive defines that values within a first collection of cells be unique within a worksheet of the source spreadsheet [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
As for dependent claim 10, Carver and Nag teach the product as described in claim 1, but Carver does not specifically teach the following limitation. However, Nag teaches:
further comprising code that, when executing on one or more computing device, performs the step of creating a file executable by a runtime that is configured to process data according to the one or more directives and the one or more formulas of the source spreadsheet [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 11, Carver and Nag teach the product as described in claim 10, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein processing the sample input data set includes reading and executing the file using the runtime as applied to the sample input set [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 12, Carver and Nag teach the product as described in claim 10, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the file executable by the runtime is configured to analyze the first input data set for compliance with the input data criteria [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules. For example, a rule may restrict the change to a particular cell. Any edit in an attempt to change the cell may be rejected … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 1.
As for dependent claim 13, Carver and Nag teach the product as described in claim 10 and Carver further teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: automatically generating the allowed input directive defining at least one of a permissible data type, a permissible data value, and a permissible data position and including the allowed input directive in the file [(e.g. see Carver paragraphs 0029, 0030, 0031, 0032 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8 … the example file shown in FIG. 8 and FIG. 9 can automatically be converted by the invention into logic, conversation and calculations”].
As for independent claim 14, Carver teaches a computer program product comprising:
receiving a source spreadsheet including first input data processed according to one or more directives of the source spreadsheet to create first output data [(e.g. see Carver paragraphs 0028-0030, 0036) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs … the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
analyzing the first input data and the one or more directives to identify input data criteria including at least one of (i) permissible data types, (ii) permissible data values, and (iii) permissible data positions [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].].
Carver does not specifically teach testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria, (b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet, (c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions, or repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria, wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet, and is usable to validate input data provided for future processing by the source spreadsheet. However, in the same field of invention, Nag teaches:
testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
(b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
(c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria [(e.g. see Nag paragraphs 0045, 0105) ”The caching tool 220 may include caches such as memories that allow scenarios that have been previously run on a particular model instance to be saved and redeployed quickly to the appropriate user at the external API engine 210, rather than fully processing the data again through various engines in the model instance 250. For example, the memory of the caching tool 220 stores previously generated values of the spreadsheet in one or more previous runs that edited spreadsheet file instances … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell”].
wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet, and is usable to validate input data provided for future processing by the source spreadsheet [(e.g. see Nag paragraphs 0077, 0104) ”the file server 120 may receive a mapping file that designates the mapping between the fields (such as cells in spreadsheet) of the source file and the destination file. The file server 120 may store the mapping file … The destination file may include multiple fields and data values in different fields. A source file also may include multiple fields and data values. The mapping file may link a particular field in the destination file to a particular field in the source file … the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas, contents that are not supposed to be included, formatting issues, and other visual errors. While the term “mapping test” is used, the mapping test generally is a quality assurance test and is not limited to strictly examining the proper mapping between two spreadsheets. The mapping tests may include tests that scan for various types of informalities. The mapping tests may include a hash test, cell value comparison test, external reference test, analytical report test, and scenario comparison test”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add testing the input data criteria by: (a) generating one or more sample input data sets each including data in a spreadsheet-compatible format conforming to the input data criteria, (b) processing the one or more sample input data sets according to the one or more directives of the source spreadsheet, (c) identifying an error that causes a failure in the processing of the one or more sample input data sets, the error related to at least one of the permissible data types, the permissible data values, and the permissible data positions conforming to the input data criteria and (d) updating the input data criteria to correct the error by changing at least one of the permissible data types, the permissible data values, and the permissible data positions, or repeating steps (a)–(d) until there are no failures in the processing of one or more additional sample input data sets conforming to the updated input data criteria; and creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria, wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet, and is usable to validate input data provided for future processing by the source spreadsheet, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for independent claim 15, Carver teaches a computer program product comprising:
receiving a source spreadsheet including: a first input data set; and a first output data set, wherein the first input data set is processed according to one or more formulas of the source spreadsheet to generate the first output data set [(e.g. see Carver paragraphs 0028-0030) ”As soon as the spreadsheet file is identified or uploaded by the user in 301 of FIG. 3, the invention identifies the input and output cells, 302, and input and output … identify likely input and output [c]ells is simply by looking for formulas … The sample spreadsheet in FIG. 8 is presented without formulas exposed as cell contents, which is the typical state of most spreadsheets when users open a workbook or worksheet. In 807, 808, 809, 811, 812, 813 and 814 of FIG. 8 are some of the cells in the sample workbooks that a typical spreadsheet user would recognize as containing values … FIG. 9 shows the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs”].
identifying one or more directives defining functionality of the source spreadsheet including one or more actions taken to generate the first output data set from the first input data set, wherein at least one of the one or more actions includes application of the one or more formulas [(e.g. see Carver paragraphs 0030, 0036) ”the sample spreadsheet, contains an independent variable that's directly referenced six (6) times by formulas that depend on its value. No other input is referred to more frequently in the sample spreadsheet FIG. 9, so the system initially assumes this is the most important input needed from a user and places this question first automatically, even though many other inputs precede the order of B12 on the sample spreadsheet in FIG. 9. This process happens as part of the input and output (I/O) ratio analysis shown in 309 of FIG. 3. In the prior art, a spreadsheet user, that didn't create the spreadsheet, may have to read a long list of instructions and wade through row after row of inputs and outputs to determine what information they need to gather in order to get a result … the same spreadsheet is in FIG. 8, but with the formulas displayed, as opposed to the outputs, to illustrate how the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user”].
automatically generating an allowed input directive defining input data criteria including one or more of (i) permissible data types, (ii) permissible data values, (iii) permissible data positions derived from data included within at least one of the first input data set and the first output data set of the source spreadsheet, and (iv) one or more input directives describing at least one of a permissible data type, a permissible data value, and a permissible data position of the first input data set [(e.g. see Carver paragraphs 0029, 0030, 0031 and Fig. 13) ”the system identifies inputs and outputs to quickly generate a conversation that can automatically request information for inputs from a user, via text or voice, to generate the outputs most relevant to a user … the present invention uses some of the cells identified as inputs to generate a fully formed text question and also to set the parameters for acceptable type of answers from a conversational bot users … information about the types of values is communicated to the typical user first by the format in those same cells, such as currency (“$” dollar sign symbol) in 809 and percentage (“%” symbol) in the same FIG. 8, and of course by the adjacent or nearby row and/or column labels, such as 804, 805, 806 and 810 in FIG. 8”].
Carver does not specifically teach wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet, using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, or analyzing the sample output data set to identify an error; in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set, and receiving a second input data set different from the first input data set, and applying the updated allowed input directive to validate the second input data set for future processing by the source spreadsheet. However, in the same field of invention, Nag teaches:
wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet [(e.g. see Nag paragraph 0077) ”the file server 120 may receive a mapping file that designates the mapping between the fields (such as cells in spreadsheet) of the source file and the destination file. The file server 120 may store the mapping file … The destination file may include multiple fields and data values in different fields. A source file also may include multiple fields and data values. The mapping file may link a particular field in the destination file to a particular field in the source file”].
using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria [(e.g. see Nag paragraphs 0036, 0096) ”generate a dataset that includes values in the spreadsheet file instance. For example, the values also may be referred to as contents, which includes numerical values, formulas, and rules in various cells of the spreadsheet file instance … may be associated with a plurality of scenarios. Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells”].
processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set [(e.g. see Nag paragraphs 0043, 0090, 0099) ”The dataset may include values of a spreadsheet file instance. The values may be generated by calculations performed by the file server 120 for the spreadsheet file instance … The calculation engine 258 performs calculations of other cells in the spreadsheet file instance based on the new or edited value. In another example, the dataset inputted from the user may specify a new formula or rule. The calculation engine 258 applies the formula or rule to one or more cells in the spreadsheet file instance that is associated with the user. The calculation engine 258 generates the values in the spreadsheet file instance. The calculation engine 258 may repeat the calculation for other spreadsheet file instances and also for other spreadsheets. The values of a single spreadsheet file instances may be provided as an output dataset … may include a first set of results that are generated from one or more scenarios selected by the first user”].
analyzing the sample output data set to identify an error; in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set [(e.g. see Nag paragraphs 0077, 0104, 0105, 0109) ”the file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas … The processor scans for each cell and provides a pass if no spreadsheet cell has a hash (error) value in the cell. The processor may identify a fail if any spreadsheet cell has a hash (error) value in the cell. If there are no hash values, this indicates the input sheet (e.g., the original file that includes a model) and the output sheet (e.g., the standardized spreadsheet) have integrated correctly or at least the two files do not fail to integrate in terms of hash errors … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar … identifies any fields that are specified in the mapping file and use the data values in those fields to update the destination files. The update may include replacing the old value in the destination file with the value in the source file. The update also may be adding new values to the destination file”].
and receiving a second input data set different from the first input data set, and applying the updated allowed input directive to validate the second input data set for future processing by the source spreadsheet [(e.g. see Nag paragraphs 0082, 0096, 0104) ”Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios. Upon receiving a selection of a scenario, the file server 120 automatically populates the predetermined values to the cells specified in the scenario's rules. Hence, the operation of the GUI is streamlined and the user can quickly switch between different sets of data … he file server 120 may conduct different kinds of mapping tests to determine whether the spreadsheets, including the standardized spreadsheet, include one or more informalities. The informalities may include errors in values or formulas, contents that are not supposed to be included, formatting issues, and other visual errors. While the term “mapping test” is used, the mapping test generally is a quality assurance test and is not limited to strictly examining the proper mapping between two spreadsheets. The mapping tests may include tests that scan for various types of informalities. The mapping tests may include a hash test, cell value comparison test, external reference test, analytical report test, and scenario comparison test … adjust the mapping file 422 when a new source file 412 is received”].
Therefore, considering the teachings of Carver and Nag, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to add wherein the allowed input directive is attached to, or otherwise associated with, the source spreadsheet, using the allowed input directive, automatically generating a sample input data set including data in a spreadsheet-compatible format conforming to input data criteria, processing the sample input data set according to the one or more directives and the one or more formulas of the source spreadsheet to generate a sample output data set, or analyzing the sample output data set to identify an error; in response to identifying an error updating the allowed input directive based on a relationship between the error and the sample input data set, and receiving a second input data set different from the first input data set, and applying the updated allowed input directive to validate the second input data set for future processing by the source spreadsheet, as taught by Nag, to the teachings of Carver because it enables the efficient and speedy deployment of complex spreadsheets (e.g. see Nag paragraph 0045).
As for dependent claim 16, Carver and Nag teach the product as described in claim 15; further, claim 16 discloses substantially the same limitations as claim 10. Therefore, it is rejected with the same rational as claim 10.
As for dependent claim 17, Carver and Nag teach the product as described in claim 16; further, claim 17 discloses substantially the same limitations as claim 11. Therefore, it is rejected with the same rational as claim 11.
As for dependent claim 18, Carver and Nag teach the product as described in claim 16; further, claim 18 discloses substantially the same limitations as claim 12. Therefore, it is rejected with the same rational as claim 12.
As for dependent claim 19, Carver and Nag teach the product as described in claim 18, but Carver does not specifically teach the following limitation. However, Nag teaches:
wherein the runtime extracts the allowed input directive from the file to analyze input data different from the first input data set according to the input data criteria [(e.g. see Nag paragraphs 0033, 0054, 0059, 0072, 0100) ”a software system that performs calculations and processing of files such as spreadsheets to generate datasets that includes values in the files such as spreadsheets … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules … cell may be calculated in runtime by the virtualization engine 316 … the file server 120 may run one or more mapping tests to check mapping and other quality issues of various standardized spreadsheets that are saved on the file server 120 … run a spreadsheet recalculation without performance degradation”].
The motivation to combine is the same as that used for claim 15.
As for dependent claim 20, Carver and Nag teach the product as described in claim 15, but Carver does not specifically teach the following limitations. However, Nag teaches:
further comprising code that, when executing on one or more computing devices, performs the steps of: when data within the second input data set is found to deviate from the input data criteria, identifying the second input data set as incompatible for use with the source spreadsheet and when data within the second input data set is found to conform to the input data criteria, identifying the second input data set as compatible for use with the source spreadsheet [(e.g. see Nag paragraphs 0072, 0096, 0109) ”Each scenario is a set of predetermined values for one or more dashboard cells. For example, a scenario may include rules that are related to a number of cells. The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios. Upon receiving a selection of a scenario, the file server 120 automatically populates the predetermined values to the cells specified in the scenario's rules … The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar. This test may capture errors that are not captured in the value comparison test because the value comparison test reviews a file that is static. Values in the value comparison test may match, but when input values change as a user selects a different scenario, the scenario comparison check may discover that a multiplier is different in the formulas of the two files, or the direction of an arithmetic sign is reversed … The data values may include integers, strings, and coordinates specifying the input cells. The calculation engine 258 performs calculations and processing of the values in the spreadsheet. The calculation engine 258 also may check one or more rules associated with the spreadsheet to determine whether the edits in the dataset transmitted from a client device may contradict any of the rules. For example, a rule may restrict the change to a particular cell. Any edit in an attempt to change the cell may be rejected”].
The motivation to combine is the same as that used for claim 15.
Response to Arguments
Applicant's arguments, filed 21 July 2026, have been fully considered but they are not persuasive.
Applicant argues that [“None of this teaches or suggests "creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria." First, Nag's "scenarios" are predetermined sets of values that a user manually selects through the GUI; they are not an allowed input directive associated with the source spreadsheet that specifies input data criteria” (Page 10).].
Examiner respectfully disagrees. The “scenarios” are not being interpreted as an “allowed input directive”, but are being used to show sample input data sets. Nag teaches these sample data sets and identification of errors based on the sample data sets in paragraphs 0096, 0109 of Nag’s disclosure [“The scenario includes predetermined values for those cells. A different scenario includes a different set of predetermined values for those cells. A user may use the GUI to switch between scenarios … The scenario comparison check reviews an original file that includes a model and an analytic report. The scenario comparison check changes values with respect to input cells in both spreadsheets. The file server 120 may checks values in the spreadsheets based on the predetermined values in one or more scenarios. With the change in input values based on a scenario, the scenario comparison check is run in a fashion similar to the value comparison test to make sure that the resulting values in the cells in two spreadsheets are similar. This test may capture errors that are not captured in the value comparison test”]. One of ordinary skill in the art, namely a software developer, would recognize that the user can cycle through predetermined sets of data for cells to test the model/mapping for errors. Thus, the combination adequately teaches applicant’s claimed limitations.
Applicant argues that [“Nag does not fill the void left by Carter … Nag’s mapping file 422 likewise does not qualify as a persistent artifact associated with a spreadsheet that could be considered analogous to the claimed input directive” (Pages 10-11).].
Examiner respectfully disagrees. Nag teaches creating an allowed input directive for the source spreadsheet that specifies the updated input data criteria in paragraphs 0077, 0080-0082, 0096, 0104 of Nag’s disclosure [“the file server 120 may receive a mapping file that designates the mapping between the fields (such as cells in spreadsheet) of the source file and the destination file. The file server 120 may store the mapping file … The destination file may include multiple fields and data values in different fields. A source file also may include multiple fields and data values. The mapping file may link a particular field in the destination file to a particular field in the source file … automatically detect the values need to be pasted to the mapping file 422 … the mapping file 422 has different types of cells … determines the type of cell that is being inputted and automatically generates values based on the type of cell … The scenario includes predetermined values for those cells … switch between different sets of data … adjust the mapping file 422 when a new source file 412 is received”]. One of ordinary skill in the art, namely a software developer, would recognize that a mapping file is linked to a source spreadsheet and directs the input data, based on type and value, to an output spreadsheet where the mapping file may be updated based on new data sets (e.g. scenarios). Thus, the combination adequately teaches applicant’s claimed limitation.
Applicant argues that [“the stated rationale for combining the references does not support the proposed modification” (Page 11).].
Examiner respectfully disagrees. Obviousness can be established by combining or modifying the teachings of the prior art to produce the claimed invention where there is some teaching, suggestion, or motivation to do so. In re Kahn, 441 F.3d 977, 986, 78 USPQ2d 1329, 1335 (Fed. Cir. 2006). Carver teaches analyzing spreadsheets to determine required inputs based on formulas. Nag teaches quality assurance testing of spreadsheets. One of ordinary skill in the art, namely a software developer, would recognize that adding Nag’s spreadsheet testing and data validation to Carver’s spreadsheet analysis would allow the user to deploy complex spreadsheets in a fast and efficient manner (e.g. see Nag paragraph 0045). The strongest rationale for combining references is a recognition, expressly or impliedly in the prior art or drawn from a convincing line of reasoning based on established scientific principles or legal precedent, that some advantage or expected beneficial result would have been produced by their combination. In re Sernaker, 702 F.2d 989, 994-95, 217 USPQ 1, 5-6 (Fed. Cir. 1983). See also Dystar Textilfarben GmbH & Co. Deutschland KG v. C.H. Patrick, 464 F.3d 1356, 1368, 80 USPQ2d 1641, 1651 (Fed. Cir. 2006) ("Indeed, we have repeatedly held that an implicit motivation to combine exists not only when a suggestion may be gleaned from the prior art as a whole, but when the ‘improvement’ is technology-independent and the combination of references results in a product or process that is more desirable, for example because it is stronger, cheaper, cleaner, faster, lighter, smaller, more durable, or more efficient. Because the desire to enhance commercial opportunities by improving a product or process is universal—and even common-sensical—we have held that there exists in these situations a motivation to combine prior art references even absent any hint of suggestion in the references themselves.").
Citation of Pertinent Prior Art
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
U.S. PGPub 2018/0046608 A1 issued to Yousaf et al. on 15 February 2018. The subject matter disclosed therein is pertinent to that of claims 1-20 (e.g. storing validation rules in association with a spreadsheet).
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to CHRISTOPHER J FIBBI whose telephone number is (571)-270-3358. The examiner can normally be reached Monday - Thursday (8am-6pm).
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, William Bashore can be reached at (571)-272-4088. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/CHRISTOPHER J FIBBI/Primary Examiner, Art Unit 2174