Difference between notebook id by OfficeJS and One

2019-03-01 03:51发布

问题:

I'm trying to build task-pane add-in for OneNote ClassNotebook.

I want to know whether current user is teacher or student.

To achieve this, my plan was:
1. Get ID of activeNotebook from officeJS
2. Get class notebooks with ID from 1 from OneNote API
3. Use students and teachers from 2 to check if current user is student or teacher

But the id from 2 is something weird form like this -{3b9c6337-cd8c-5c1c-a87b-1a9515237c48}{1}

How can I fetch notebook with that ID?

Code:

let notebook = ctx.application.getActiveNotebook();
notebook.load('id,name,clientUrl');
return ctx.sync().then(() => {
  fetch({
    url: `https://www.onenote.com/api/v1.0/me/notes/classNotebooks/${notebook.id}?expand=students,teachers`
  });
});

回答1:

EDIT: I'm happy to say this is now available, use GetRestApiID for this.

https://github.com/OfficeDev/office-js-docs/blob/master/reference/onenote/page.md#getRestApiId


At this moment, the OneNote REST API and OneNote add-ins have imcompatible id's. There is a uservoice entry for this: https://onenote.uservoice.com/forums/245490-onenote-developer-apis/suggestions/17010982-add-onenote-add-ins-to-onenote-api-compatible-ids

For now, you'll have to rely in something like the URLs or the names.



回答2:

The Id between REST API and JavaScript API are not compatible. What is compatible is ClientUrl.

In JavaScript API, there is notebook.ClientUrl In Rest API, it has oneNoteClientUrl.