OneNote - 使用 navigateToPage 和 getActivePage API (Office.js)

问题描述

假设我有一个具有以下结构的 OneNote 文档:

@H_404_2@
  • Alpha 部分 @H_404_2@
  • 页面单元
  • 页面操作
  • 页面
  • 部分测试版 @H_404_2@
  • 第 1 页
  • 第 2 页
  • 第 3 页
  • 截面伽马 @H_404_2@
  • 页面第一
  • 第二页
  • 第三页
  • 我的目标是浏览所有页面内容(通过页面内容属性)。我了解此属性存在限制 - 它仅适用于活动页面

    您只能通过 Page#load 访问当前活动页面页面内容。要更改活动页面,请调用 navigatetoPage($page)

    这是代码片段:

    32          await OneNote.run(async context => {
    33
    34              // get sections
    35              var sections = context.application.getActiveNotebook().sections;
    36
    37              sections.load("name,pages");
    38
    39              await context.sync()
    40
    41              // go through each section
    42              sections.items.forEach( async section => {
    43                  var pages = section.pages;
    44                  pages.load("title");
    45
    46                  await context.sync();
    47
    48                  pages.items.forEach( async page => {
    49                      console.log("Section# " + section.name + ",page# " + page.title)
    50                      {
    51                          console.log("Now switching to " + page.title)
    52                          context.application.navigatetoPage(page);
    53                          // setTimeout( _ => { console.log("delay of 5sec.") },5000 );
    54                          await context.sync();
    55                          var selectedPage = context.application.getActivePage();
    56                          await context.sync();
    57                          selectedPage.load('id,title');
    58                          await context.sync();
    59                          console.log("ActivePage title " + selectedPage.title)
    60                      }
    61                  });
    62              });
    

    如果我注释掉第 51-59 行,则效果很好:

    taskpane.js:49 Section# Section Gamma,page# Page First
    taskpane.js:49 Section# Section Gamma,page# Page Second
    taskpane.js:49 Section# Section Gamma,page# Page Third
    taskpane.js:49 Section# Section Beta,page# Page 1
    taskpane.js:49 Section# Section Beta,page# Page 2
    taskpane.js:49 Section# Section Beta,page# Page 3
    taskpane.js:49 Section# Section Alpha,page# Page Uno
    taskpane.js:49 Section# Section Alpha,page# Page Dos
    taskpane.js:49 Section# Section Alpha,page# Page Tres
    

    但如果我启用该代码(使用navigatetoPage API),它有两个问题:

    @H_404_2@
  • navigatetoPage 看起来像是在其他地方排队,并且 context.sync() 第 54 行不起作用。
  • 最后,当navigatetoPage 处理排队请求时,它会抛出错误。 这是 application.navigatetoPage API 的已知限制吗?我假设我已准备好所有 context.sync。
  • 如果我在这里遗漏了任何逻辑,请告诉我。

    解决方法

    暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

    如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

    小编邮箱:dio#foxmail.com (将#修改为@)