如何使用Microsoft Graph .NET SDK检索OneNote页面的内容?

时间:2019-05-10 22:47:30

标签: c# uwp microsoft-graph onenote-api microsoft-graph-sdks

我要换用旧的OneDrive SDK,以编程方式访问UWP应用程序中的OneNote内容,并且我已开始使用Microsoft Graph for .NET SDK。我需要做的一件事是获取特定页面的内容。目前,我正在尝试这样做:

exports.handler = function(context, event, callback) {
    const client = context.getTwilioClient();
    var nums = [event[0], event[1], event[2], event[3]]; //hardcoded for 4 textboxes
    nums.forEach(function(arrayNum) {
        client.messages.create({
            to: arrayNum,
            from: "REPLACE-WITH-YOUR-TWILIO-NUMBER",
            body: "REPLACE WITH YOUR MESSAGE/WHATEVER MESSAGE YOU WANT!"
        }).then(msg => {
            callback(null, msg.sid);
        }).catch(err => callback(err));
    });
};

...可以正常工作,并获得笔记本中所有标题为“购物清单”的页面。但是,所有这些页面都具有await _graphClient.Me.Onenote.Pages .Request() .Filter("tolower(title) eq 'shopping list'") .GetAsync(); null属性,这使我无法获取那些页面的HTML内容。我可以验证这些页面中至少有一个确实在OneNote应用程序中包含内容。

我已经阅读了SDK的文档,看来我应该只拿回Content,而无需采取任何进一步的措施。我缺少步骤了吗,还是我使用API​​的方式不正确?

2 个答案:

答案 0 :(得分:2)

可以按单个页面请求页面内容,例如:

GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content

可以这样请求每个页面内容(通过Page resourcecontentUrl属性):

var result = await graphClient.Me.Onenote.Pages.Request().GetAsync();
foreach (var page in result)
{

     //download Page content
     var message = new HttpRequestMessage(HttpMethod.Get, page.ContentUrl);
     await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
     var response = await graphClient.HttpProvider.SendAsync(message);
     var content = await response.Content.ReadAsStringAsync();  //get content as HTML 

}

答案 1 :(得分:1)

事实证明,SDK支持直接获取单个页面的内容,但是这样做的语法不是很容易发现。是:

Stream pageContent = await _graphClient.Me.Onenote.Pages[page.Id]
    .Content // This could be omitted to retrieve every property on the page, presumably
    .Request()
    .GetAsync();

结果显示IOnenotePagesCollectionRequestBuilder返回的_graphClient.Me.Onenote.Pages支持键样式索引来检索特定页面。使用默认的智能感知下拉列表= /

完全找不到