我的代码旨在使在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/