我的代码旨在让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()
}
答案 0 :(得分:1)
你的身体不是空的。你的第一个问题是在这一行
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循环内部,那么您需要在{
和while
之后添加}
,以便在{{1}的1次迭代中发生最后一次操作之后1}}循环。