Google App Scripts可以通过编程方式访问脚注上标的位置吗?

时间:2016-03-06 05:33:47

标签: google-apps-script footnotes

是否可以使用DocumentApp查找正文中脚注引用的位置?

使用editAsText()findText()搜索正文或元素时,不会显示上标脚注标记。

例如,在以下文档中:

这是一个关于统计数据的精彩故事! 1 您也可以在这里看到其他内容。

body.getText()返回'这是一个有统计数据的引人入胜的故事!你也可以在这里看到其他的东西。没有参考,没有 1

如果我想替换,编辑或操作脚注引用周围的文本(例如 1 ),我该如何找到它的位置?

2 个答案:

答案 0 :(得分:1)

事实证明,脚注引用在Doc中被编入索引。因此,您可以获取脚注引用的索引,在该索引处插入一些文本,然后从其父项中删除脚注。

function performConversion (docu) {

  var footnotes = docu.getFootnotes() // get the footnote

  var noteText = footnotes.map(function (note) {
    return '((' + note.getFootnoteContents() + ' ))' // reformat text with parens and save in array
  })

  footnotes.forEach(function (note, index) {
    var paragraph = note.getParent() // get the paragraph

    var noteIndex = paragraph.getChildIndex(note) // get the footnote's "child index"

    paragraph.insertText(noteIndex, noteText[index]) // insert formatted text before footnote child index in paragraph

    note.removeFromParent() // delete the original footnote
  })
}

答案 1 :(得分:0)

您可以使用getFootnotes()编辑脚注。 getFootnotes()返回一个对象数组,你需要迭代它们。

您可以按以下方式列出Logger.log()中脚注的位置(即父段落):

    function getFootnotes(){
      var doc = DocumentApp.openById('...');
      var footnotes = doc.getFootnotes();
      var textLocation = {};

  for(var i in footnotes ){
      textLocation = footnotes[i].getParent().getText();
      Logger.log(textLocation);    

  }    
}

将段落截断到脚注上标。您可以使用:

textLocation = footnotes[i].getPreviousSibling().getText();

在你的情况下它应该返回:这是一个带有统计数据的引人入胜的故事!只有这一部分,因为 [1] 就在统计数据之后!