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)/ 对此,我得到以下回应: 这是正确的。但是,如果我附加一个/

我的目标是在与我共享的在线Excel电子表格上读写内容。该操作必须在WPF C#应用程序中使用Microsoft Graph API执行。问题是我无法访问单个行,只能访问工作表名称之前的信息

我可以通过以下调用获得正确的工作表:

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"
    }
  }
}