OneNote 插件开发
文章目录

OneNote 插件开发

环境搭建

环境搭建部分不想做了, 直接参考他 官方文档 ]就是了.

API 的使用

主要有两种核心API:

  1. host-specific API: 可以获取到 oneNote相关的内容, 比如section,page等等信息
  2. Common API: 可以获取到Office相关的内容,t这里面有一通用的操作比如,比如对字以及对内容的一些操作。

Host-Specfic API的使用

  1. 获取 application instance
  2. 创建一个 proxy
  3. 使用这个proxy来进行load操作, 这个操作会被加到队列里面,但是不会进行操作。
  4. 执行 context.sync 将所有队列里面的操作执行起来.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function getPagesInSection() {
OneNote.run((context) => {
// 1. 首先通过 context.application 获取到API,然后调用其中的方法获取到当前section 的pages
var pages = context.application.getActiveSection().pages;

// 2. load 一下对应的id和title,但是不操作
pages.load('id,title');

// 3. 在这一步就对队列里面的任务经营进行,注意一下这个地方是async
return context.sync()
.then(() => {

// 3.5 取出得到的 id 和 title
for (let page of pages.items) {
var pageId = page.id;
var pageTitle = page.title;
console.log(pageTitle + ': ' + pageId);
}
})
.catch((error) => {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
});
}

Common API 的调用

1
2
3
4
5
6
7
8
9
10
11
12
13
function getSelectedText() {
// 这个地方是获取一个页面里面鼠标选中的文本
Office.context.document.getSelectedDataAsync(
Office.CoercionType.Text, {
valueFormat: "unformatted"
},
function(asyncResult) {
var error = asyncResult.error;
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(error.message);
} else console.log(asyncResult.value);
});
}