我已经能够整理出中间位(API似乎被调用得很好)沿着子菜单的显示。最初我认为只是结束部分不起作用,但我现在认为选择部分也不起作用。getSelection()
我做错了什么,我需要做什么来插入链接到所说的选择?(澄清,不是用链接替换文本,而是插入链接到文本)
//Open trigger to get menu
function onOpen(e) {
DocumentApp.getUi().createAddonMenu()
.addItem('Scry', 'serumVisions')
.addToUi();
}
//Installation trigger
function onInstall(e) {
onOpen(e);
}
//I'm not sure if I need to do this but in case; declare var elements first
var elements
// Get selected text (not working)
function getSelectedText() {
const selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getRangeElements();
Logger.log(elements);
} else {
var elements = "Lack of selection"
Logger.log("Lack of selection");
}
}
//Test run
// insert here
// Search Function
function searchFunction(nameTag) {
// API call + inserted Value
let URL = "https://api.scryfall.com/cards/named?exact=" + nameTag;
// Grabbing response
let response = UrlFetchApp.fetch(URL, {muteHttpExceptions: true});
let json = response.getContentText();
// Translation
let data = JSON.parse(json);
// Jackpot
let link = data.scryfall_uri;
// Output
Logger.log(link);
}
// Test run
searchFunction("Lightning Bolt");
//Let's hope this works how I think it works
function serumVisions() {
const hostText = getSelectedText();
const linkage = searchFunction(hostText);
// Unsure what class I'm supposed to use, this doesn't
const insertLink = DocumentApp.getActiveDocument().getSelection().newRichTextValue()
.setLinkUrl(linkage);
Logger.log(linkage);
}
对于第一部分,我尝试了Google文档中的getSelection()
和getCursor()
示例,但它们似乎不起作用,它们都一直返回null。
对于插入链接位,我从文档的电子表格部分阅读了所有这些类,当时我不知道,但现在知道,我还没有能够找到一个版本的谷歌文档的相同任务。也许它的工作,但我写错了,以及,idk。
1条答案
按热度按时间5n0oy7gb1#
修改点:
getSelectedText()
和searchFunction(nameTag)
的函数没有返回值。我认为这可能是您当前they all just keep returning null.
问题的原因。var elements = selection.getRangeElements();
的elements
不是文本数据。DocumentApp.getActiveDocument().getSelection()
没有newRichTextValue()
的方法。searchFunction("Lightning Bolt");
的情况下,当脚本运行时,该函数始终运行。请注意这一点。当这些要点反映在你的脚本中时,下面的修改怎么样?
修改的脚本:
请删除
searchFunction("Lightning Bolt");
。并且,在这种情况下,不使用var elements
。请注意这一点。从您的脚本中,我猜测在您的情况下,您可能希望运行
serumVisions()
。而且,我还认为您可能希望运行单个函数。因此,我对您的脚本进行了如下修改。serumVisions()
函数时,将检索到Lightning Bolt
的文本,并检索到类似https://scryfall.com/card/2x2/117/lightning-bolt?utm_source=api
的URL。并且,此链接将设置为所选文本“Lightning Bolt”。参考: