我要换用旧的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的方式不正确?
答案 0 :(得分:2)
可以按单个页面请求页面内容,例如:
GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content
可以这样请求每个页面内容(通过Page
resource的contentUrl
属性):
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
支持键样式索引来检索特定页面。使用默认的智能感知下拉列表= /