我试图写一个应用程序脚本来替换当前的文本选择与一个新的人工智能生成的文本,通过菜单项.该脚本将工作正常,但我不能更新当前的选择,因为我得到以下错误
TypeError:无法在generateAndReplace(Codice:55:19)处读取null的属性(阅读“insertText”)
我猜这是由于选择与光标位置无关...
这是我的剧本
// Get the active Google Docs document and the user-selected text
const doc = DocumentApp.getActiveDocument();
const userText = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
// Get the body of the document and the prompt for the OpenAI API request
const body = doc.getBody();
const prompt = doc.getSelection().getRangeElements()[0].getElement().asText().getText();
// Get the completion prompt from OpenAI API request
generatedText = completion(prompt)
// log
Logger.log(generatedText);
var currentPosition = doc.getCursor();
deleteSelectedText();
currentPosition.insertText(generatedText.toString());
return;
}
如何用新文本替换整个选定内容?
谢谢大家!
1条答案
按热度按时间lztngnrs1#
我相信你的目标如下。
generatedText = completion(prompt)
替换所选文本。completion(prompt)
。但是,你的函数completion(prompt)
工作正常。修改要点:
var currentPosition = doc.getCursor()
和currentPosition.insertText(generatedText.toString())
的情况下,所选文本无法使用。我认为您当前发行TypeError: Cannot read properties of null (reading 'insertText')
的原因是由于此。getSelection()
。当这些点反映在脚本中时,下面的示例脚本如何?
示例脚本:
使用此脚本时,请选择一个文本并运行脚本。
测试:
例如,当
const generatedText = completion("someText");
的generatedText
返回sample
的文本值时,将获得以下结果。注:
completion("someText")
工作正常。请小心。参考文献:
添加:
从你下面的答复中,
但是我仍然得到一些错误,因为下面的const start = e.getStartOffset();const end = e.getEndOffsetInclusive();将返回start=-1和end=-1
我担心你选择的文本包含图像。从
replace the current text selection with a new AI generated text
的问题中,我以为你想替换选择的文本。如果你选择的文本包含图像,下面的示例脚本如何?示例脚本:
generatedText
。