我的代码旨在使在Google文档中的编辑更加容易,但是效果不佳,并且返回getBody null。我已经测试过将“ body”设置为变量,但这并不起作用。由于我对Javascript缺乏经验,因此很难弄清楚getBody到底返回null的原因。因此,如果您知道我的错在哪里,它将对我有帮助。

function myFunction() {

var searchResult

searchResult =
DocumentApp.getActiveDocument().getBody().findText("very",searchResult)
Logger.log(searchResult)

while (searchResult !== null)searchResult.getElement().asText().setAttributes(searchResult.getStartOffset(),searchResult.getEndOffsetInclusive(),"#FF000")

  searchResult =
DocumentApp.getActiveDocument().getBody().findText("very",searchResult)

}



function highlightProblem() {

var words = ["very","so","totally","really"]

words.forEach(findText)

}


function onOpen(){
DocumentApp.getUi().createMenu('everythingisnotfine.avi').addItem('Higlight Words That Make You Sound Like a Dandy', 'higlightProblem').addToUi()
}

最佳答案

您的身体不为空。您的第一个问题是在这一行

searchResult = DocumentApp.getActiveDocument().getBody().findText("very", searchResult)


您没有变量findText("very", searchResult)时就有searchResult。根据文档,这需要一个range类(阅读here

接下来是整个混乱

while (searchResult !== null)
  searchResult.getElement().asText()
    .setAttributes(searchResult.getStartOffset(),
                   searchResult.getEndOffsetInclusive(),
                   "#FF000"
                  )


我做了一些格式化,以更好地了解整个while循环。首先,这是一个无休止的循环,因为它会不断重复,因为searchResult从未在循环内更改,因此此步骤要么被跳过要么将无休止地继续。接下来是这个特殊的方法:

.setAttributes(searchResult.getStartOffset(),
               searchResult.getEndOffsetInclusive(),
               "#FF000"
              )


由于使用不正确,请仔细阅读方法here。您正在为该方法提供string,而该方法需要object。在同一文档页面中,向下滚动到下一个没有偏移量的方法,它显示了attributes应该如何格式化的示例。

接下来,我们移出循环。这似乎毫无意义

searchResult = DocumentApp.getActiveDocument().getBody().findText("very",searchResult);


也许您是说要在while循环内完成?因为本质上您当前正在做的是


从文档设置searchResult
记录searchResult对象
设置searchResult属性(因为它看起来像十六进制颜色代码,所以我假设您希望为代码着色)。在searchResult不是null时执行此操作。
从文档设置searchResult
结束


如果要在while循环内进行操作,则需要在{循环的1次迭代中在while之后添加},并在希望执行的最后一个动作之后添加while

关于javascript - 即使我认为应该这样写,getBody也会在Apps脚本中始终返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48528270/

10-09 08:54