C# Microsoft Graph API未返回共享工作表的表
我的目标是在与我共享的在线Excel电子表格上读写内容。该操作必须在WPF C#应用程序中使用Microsoft Graph API执行。问题是我无法访问单个行,只能访问工作表名称之前的信息 我可以通过以下调用获得正确的工作表:C# Microsoft Graph API未返回共享工作表的表,c#,excel,microsoft-graph-api,C#,Excel,Microsoft Graph Api,我的目标是在与我共享的在线Excel电子表格上读写内容。该操作必须在WPF C#应用程序中使用Microsoft Graph API执行。问题是我无法访问单个行,只能访问工作表名称之前的信息 我可以通过以下调用获得正确的工作表: GET https://graph.microsoft.com/v1.0/drives(DRIVE_ID)/items(ITEM_ID)/workbook/worksheets(WORKSHEET_ID)/ 对此,我得到以下回应: 这是正确的。但是,如果我附加一个/
GET https://graph.microsoft.com/v1.0/drives(DRIVE_ID)/items(ITEM_ID)/workbook/worksheets(WORKSHEET_ID)/
对此,我得到以下回应:
这是正确的。但是,如果我附加一个/tables
,我会得到以下响应
这是不正确的,因为工作表有内容,并且没有表引用,我无法使用/tables('0')/rows
查询访问表的行
我使用的用户具有工作表的读/写权限(我可以使用浏览器更改工作表)。在应用程序上,我请求所有安全作用域,即使我读到只有“files.read”和“files.readwrite”是必需的。令牌被正确授予,我可以从文件、驱动器和工作簿中读取大量信息,除了表和行之外
我可以使用浏览器编辑的URL基于SharePoint<代码>https://COMPANY_NAME.sharepoint.com/...
有什么建议吗
更新2017-10-08
因此,在请求时,您可以检查我正在执行的请求是否正确
GET https://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets
我明白了
还有,试的时候,
GET https://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets/00000000-0001-0000-0500-000000000000
那么答案是:
最后,在创建身份验证令牌时,我请求以下作用域:“user.read”、“files.read.all”、“files.read.selected”、“files.readwrite”、“files.readwrite.all”、“files.readwrite.selected”、“sites.read.all”、“sites.readwrite.all”您能确认工作表有一个有效的范围吗?表格是工作表的一个特定元素,与数据范围不同义 要获取工作表的单元格值,可以获取。这将为您提供对工作表上包含任何修改单元格(具有格式和/或值的单元格)的区域的引用。然后可以根据需要操纵范围 为了解决第二个问题,在查询工作表时出现ItemNotFound错误:我认为您的查询没有使用正确的工作表id。id的格式为
{}
,您是在/
上查询,而不是在/{}
尝试:
GEThttps://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets/{00000000-0001-0000-0500-000000000000}
代替:
GEThttps://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets/00000000-0001-0000-0500-000000000000
除了dpim的响应,我想说的是首先检查文件是否有任何表。若并没有涉及表,那个么可以使用对象直接和数据交互
对于范围写入操作,请检查API。这要求您知道正在处理的地址
对于阅读,您可以使用
GET/workbook/worksheets/{id | name}/range(address=”获取所有包含数据的单元格开始。我发现了相同的问题。问题似乎是由于我在桌面Excel应用程序中创建了表,而不是在浏览器中创建的
为了解决这个问题,我打开了桌面Excel应用程序并删除了所有表格。然后我返回Excel online并创建了表格。这些表格被命名为Table1、Table2等等,在Excel online中无法重命名它们-这是一个已知的、有文档记录的缺陷
然后,Graph Explorer能够找到并列出这些表
为了好玩,我在桌面应用程序中重新打开了工作表,重新命名为Table1,Table2…我喜欢,Graph explorer仍然可以找到它们的新名称
已修复。仅供参考,您需要的范围是文件.ReadWrite.All
。这允许您读取/写入您可以访问的所有文件。文件.ReadWrite
仅允许您读取/写入您拥有的文件。您可以尝试v1.0/drives/items/{item id}/workbook/tables
以及v1.0/drives/items/{item id}/工作簿/工作表/{worksheet id | name}表
?注意格式稍有不同。@Marclafler MSFT我实际上有一个作用域“user.read”、“files.read.all”、“files.read”、“files.read.selected”、“files.readwrite.all”、“files.readwrite.selected”、“sites.read.all”、“sites.readwrite.all”并且该应用程序被授权访问所有这些以及更多内容。我这样做是为了确保我没有遗漏任何内容。我现在将尝试你的下一个建议。@Marclafler MSFT通过删除DRIVE_ID参数,该项目未找到,我认为这是预期的,因为这是一个“SharedWithMe”使用建议的格式,并保留/drives/DRIVE_ID,我会得到相同的空表值,除了当我尝试使用{sheet ID}参数时,我会得到“resource not found”。我假设在第二种格式上,我应该使用“/tables”而不是“tables”(斜杠添加)。我将使用可用工作表的信息更新问题。可以使用/worksheets/name或/worksheets/id访问工作表。id包含在{和}中字符。这些字符需要URL编码。因此,它类似于/worksheets/%7B00000000-0001-0000-0500-000000000000%7D。如果您使用工作表名称作为关键注释,则也应该对其进行编码。
GET https://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets",
"value": [{
"@odata.id": "/drives('DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0000-000000000000%7D%27)",
"id": "{00000000-0001-0000-0000-000000000000}",
"name": "N0",
"position": 0,
"visibility": "Hidden"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0100-000000000000%7D%27)",
"id": "{00000000-0001-0000-0100-000000000000}",
"name": "N1",
"position": 1,
"visibility": "Hidden"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0200-000000000000%7D%27)",
"id": "{00000000-0001-0000-0200-000000000000}",
"name": "N2",
"position": 2,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0300-000000000000%7D%27)",
"id": "{00000000-0001-0000-0300-000000000000}",
"name": "N3",
"position": 3,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0400-000000000000%7D%27)",
"id": "{00000000-0001-0000-0400-000000000000}",
"name": "N4",
"position": 4,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0500-000000000000%7D%27)",
"id": "{00000000-0001-0000-0500-000000000000}",
"name": "Daniel",
"position": 5,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0600-000000000000%7D%27)",
"id": "{00000000-0001-0000-0600-000000000000}",
"name": "N6",
"position": 6,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0700-000000000000%7D%27)",
"id": "{00000000-0001-0000-0700-000000000000}",
"name": "N7",
"position": 7,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0800-000000000000%7D%27)",
"id": "{00000000-0001-0000-0800-000000000000}",
"name": "N8",
"position": 8,
"visibility": "Visible"
},
{
"@odata.id": "/drives('b%DRIVE_ID')/items('ITEM_ID')/workbook/worksheets(%27%7B00000000-0001-0000-0900-000000000000%7D%27)",
"id": "{00000000-0001-0000-0900-000000000000}",
"name": "N9",
"position": 9,
"visibility": "Visible"
}]
}
GET https://graph.microsoft.com/v1.0/drives/DRIVE_ID/items/ITEM_ID/workbook/worksheets/00000000-0001-0000-0500-000000000000
{
"error": {
"code": "ItemNotFound",
"message": "The requested resource doesn't exist.",
"innerError": {
"request-id": "GUID",
"date": "2017-10-08T07:00:0"
}
}
}