我有一个谷歌文档,里面有 2 个书签。书签位于不同的段落中。
文档结构是这样的:
| ...(other content)...
[bookmark-0] | Text-0
| ...(other content)...
[bookmark-1] | Text-1
| ...(other content)...
我正在运行这个脚本
function removeTextContent() {
const docsId = '...';
const docs = DocumentApp.openById(docsId);
const doc = docs.getTabs()[0];
const bookmarks = doc.asDocumentTab().getBookmarks();
for (const [index, bookmark] of bookmarks.entries()) {
Logger.log(bookmark.getId()); // output correct values
const position = bookmark.getPosition(); // get shifted in 2nd iteration
const element = position.getElement();
const paragraph = element.asParagraph();
paragraph.clear();
position.insertText(String(index));
}
}
预期结果:
| ...(other content)...
[bookmark-0] | 0
| ...(other content)...
[bookmark-1] | 1
| ...(other content)...
实际结果:
| ...(other content)...
[bookmark-0] | 1
| ...(other content)...
[bookmark-1] | Text-1
| ...(other content)...
进一步调试显示,在第二次迭代中,
position
发生了移位,因此在第二次迭代中,position.insertText()
将值放在了错误的位置。
这段代码也给出了相同的行为
paragraph.getChild(0).removeFromParent(); // instead of paragraph.clear()
我的目标是用“其他东西”替换书签的内容,同时保持书签
.getId()
完好无损。
这是 Google 问题跟踪器 上报告的已知问题,由于请求时间较长、缺乏活动以及报告该问题的总人数,尚未打算修复。
根据最后一张票上分配的个人,Google 文档脚本编辑器错误。 Element.clear/deleteText/setText 不能与 bookmark.getposition 一起使用:
我将此问题标记为已过时,因为它尚未收到很多投票,并且自报告以来已经有一段时间了。如果您仍然认为这个问题很重要,请在下面评论并提供更多详细信息或打开一个新问题。感谢您的反馈!
他们的建议是开一张新票,让他们知道问题仍然存在。
以下是在 Google 问题跟踪器上提交的错误报告和功能请求:
由于上述原因,它们目前的状态是
Won't fix (Obsolete)
,而它们分别是在Feb 3, 2015 05:29AM
和Apr 27, 2018 07:14AM
创建的。