【问题标题】:OneNote Office.js APIs: Updating the text of a paragraph and indenting it as neededOneNote Office.js API:更新段落文本并根据需要缩进
【发布时间】:2020-06-24 19:34:48
【问题描述】:

在我学会了如何遍历 OneNote 页面的结构之后,我认为这将是一个简单的任务。

一个简单的页面会有一个大纲(相当于 div html 标记),这个大纲将包含段落(p 标记)。现在有趣的部分来了,OneNote 可以缩进段落,这样缩进的段落就会添加到其前身的子段落集合中。说起来容易做起来难

API 是here

基本上 paragraph.paragraphs.items 是段落的子段落的集合。每个段落对象都有一个名为 parentParagraph 的属性,我不知道如何使用。

所以我们的想法是采用现有的段落并将其移动为

ParagraphL1
     ParagraphL2
     ParagraphL3

应该变成

   ParagraphL1
     ParagraphL2
          ParagraphL3

为了发生上述情况,我猜paragraph2.items[0]=paragraph3。我不确定第 1 段对第 3 段作为其子项之一的引用发生了什么

我不知道的另一件事是如何用新文本更新段落的文本。似乎对于当前的 API,除了添加现有 API 的同级并删除现有 API 之外,没有其他方法可以做到这一点

更新

我试图将“测试”移到 Level11 下(结构和 ID 见图片底部,见控制台输出,最后三行

所以在Level11.items中添加测试段落成功了,但是并没有达到我预期的效果;正如您在监视窗口中看到的那样,Level11 表示它有带有测试 ID 的子级,但测试并未将 Level11 指示为其父级(请参阅底部和监视窗口中的 ID

总结

一句话:我需要能够使用 JavaScript API 缩进/取消缩进 OneNote 文档中的任意段落。如果您愿意,请从this code 开始。

【问题讨论】:

  • 您的 API 链接已损坏。不要把它放在反引号中。

标签: office-js onenote


【解决方案1】:

我不是 OneNote API 方面的专家,但似乎 paragraph.richtext.text 属性是只读的。所以,我认为您添加兄弟姐妹的想法是正确的。出于类似的原因,我认为要缩进,您需要向下插入一个子段落(与原始段落重复),然后删除原始段落。

【讨论】:

  • 相当复杂的方法,他们本可以让 parentParagraph 可写
  • 我尝试了相反的方法,即让“test”成为 Level11 的兄弟(见更新中的图片)并查看那里的 cmets
  • 您是在使用Paragraph.insert*AsSibling 方法还是试图将对象直接推送到paragraphs.items 数组中?我认为您必须使用插入方法。
  • 我也考虑过,但这适用于没有后续子级的段落。我想要的是缩进或取消缩进段落及其所有子项。当您在段落之前或之后添加文本或 html 时,您建议的方法有效,
  • 赏金是你的吗?这太不公平了,我输了200分,我对此没有中肯的答案
猜你喜欢
  • 2020-09-28
  • 1970-01-01
  • 2020-09-02
  • 2017-03-30
  • 2013-05-07
  • 2014-10-05
  • 2023-04-04
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多