Microsoftgraph Excel 不修改文件的计算
Microsoftgraph Excel calculation without modifying file
我有一个 Excel 文件,它根据几个输入变量计算产品建议。要在 Web 应用程序中使用它并让用户定义输入变量,我想使用 Microsoft graph Excel API,但不知道是否可以在不实际复制和修改的情况下进行计算原始 Excel 文件。
目前我有一个解决方案,需要三个 API 调用来执行此操作:
- 一个复制原文件(
POST .../drive/root:/filename.xlsx:/copy {name:'newfilename.xlsx'}
)
- 一个更新一个或多个单元格值(
PATCH .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A1') {values:'...'}
)
- 一个获取计算值(
GET .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A2')
)
显然这不是理想的解决方案,但我在文档中找不到更简单的解决方案。
无论如何要改进这个过程?
只要您的计算仅依赖于工作簿的现有状态(pre-defined 模板、公式),您就可以在驱动器中拥有文件的 1 个副本,re-use在不保存文档的情况下进行计算。本质上,您可以将 Excel 文件用作 calc-engine 并使用更新的结果值。
为此,您需要创建一个 session,它在进行任何 API 调用以修改数据之前不保存更新。
POST /{version}/me/drive/items/01CYZLFJGUJ7JHBSZDFZFL25KSZGQTVAUN/workbook/createSession
Body:
{ "persistChanges": false }
响应:
{
"@odata.context": "https://graph.microsoft.com/{version}/$metadata#microsoft.graph.sessionInfo",
"id": "{session-id}",
"persistChanges": false
}
结果 session header 应附加在以下 HTTP 调用中。只要您这样做,它就不会保存您的更改。
下次调用时,添加 HTTP header:
workbook-session-id: {session-id}
注意:您可以 运行 进入给定文件的 session 限制。如果您预计会有很多并发请求,那么您应该制作 Excel 文件的副本以分配负载。
我有一个 Excel 文件,它根据几个输入变量计算产品建议。要在 Web 应用程序中使用它并让用户定义输入变量,我想使用 Microsoft graph Excel API,但不知道是否可以在不实际复制和修改的情况下进行计算原始 Excel 文件。
目前我有一个解决方案,需要三个 API 调用来执行此操作:
- 一个复制原文件(
POST .../drive/root:/filename.xlsx:/copy {name:'newfilename.xlsx'}
) - 一个更新一个或多个单元格值(
PATCH .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A1') {values:'...'}
) - 一个获取计算值(
GET .../drive/root:/newfilename.xlsx:/workbook/worksheets('worksheetname')/range('address=A2')
)
显然这不是理想的解决方案,但我在文档中找不到更简单的解决方案。 无论如何要改进这个过程?
只要您的计算仅依赖于工作簿的现有状态(pre-defined 模板、公式),您就可以在驱动器中拥有文件的 1 个副本,re-use在不保存文档的情况下进行计算。本质上,您可以将 Excel 文件用作 calc-engine 并使用更新的结果值。
为此,您需要创建一个 session,它在进行任何 API 调用以修改数据之前不保存更新。
POST /{version}/me/drive/items/01CYZLFJGUJ7JHBSZDFZFL25KSZGQTVAUN/workbook/createSession
Body:
{ "persistChanges": false }
响应:
{
"@odata.context": "https://graph.microsoft.com/{version}/$metadata#microsoft.graph.sessionInfo",
"id": "{session-id}",
"persistChanges": false
}
结果 session header 应附加在以下 HTTP 调用中。只要您这样做,它就不会保存您的更改。
下次调用时,添加 HTTP header:
workbook-session-id: {session-id}
注意:您可以 运行 进入给定文件的 session 限制。如果您预计会有很多并发请求,那么您应该制作 Excel 文件的副本以分配负载。