如何实现Google Doc光标所在行文本链接到同名新建文档
功能实现需求
使用场景
- 编辑Google Doc(下称原文档)时,需要直接在文档内创建指向尚未存在的全新Google Doc的链接
- 新建的Google Doc自动以光标所在行的文本命名:比如光标所在行文本为「Cherry pie」,运行脚本后会自动创建名为「Cherry pie」的新文档,同时给原文档里该行的「Cherry pie」文本加上指向新文档的超链接
现有脚本基础
目前已写好的基础脚本已经可以实现:在原文档运行时自动获取光标所在行的文本内容,在原文档所属文件夹下创建同名新文档。比如光标所在行文本为「Cheese pizza」时,脚本会自动创建名为「Cheese pizza」的新文档,但还没实现给原文档光标所在行文本绑定新文档超链接的功能,现有代码如下:
function onOpen(e) { DocumentApp.getUi().createMenu('NewDoc') .addItem('Create', 'newDocWithSentense') .addToUi(); } function newDocWithSentense() { const doc = DocumentApp.getActiveDocument(); const cursor = doc.getCursor(); const surroundings = cursor.getSurroundingText().getText(); const currentFileFolder = DriveApp.getFileById(doc.getId()).getParents().next() const newDoc = DocumentApp.create(surroundings).getId() DriveApp.getFileById(newDoc).moveTo(currentFileFolder) }
补全后可用代码
在原有脚本基础上补充超链接插入逻辑即可,修改后的完整代码直接替换原有脚本就能用:
function onOpen(e) { DocumentApp.getUi().createMenu('NewDoc') .addItem('Create', 'newDocWithSentense') .addToUi(); } function newDocWithSentense() { const doc = DocumentApp.getActiveDocument(); const cursor = doc.getCursor(); // 获取光标所在行的文本元素和内容 const lineTextEl = cursor.getSurroundingText(); const lineContent = lineTextEl.getText(); // 原有新建文档、移动到原文档同文件夹的逻辑 const currentFolder = DriveApp.getFileById(doc.getId()).getParents().next(); const newDoc = DocumentApp.create(lineContent); const newDocUrl = newDoc.getUrl(); DriveApp.getFileById(newDoc.getId()).moveTo(currentFolder); // 给当前行整段文本绑定新文档的超链接 lineTextEl.setLinkUrl(0, lineContent.length - 1, newDocUrl); }
使用提示:脚本保存后重新打开Google Doc,会在顶部菜单栏看到名为「NewDoc」的自定义菜单,把光标放到目标行,点击菜单里的「Create」就能一键完成新建文档+加超链接的操作。
内容的提问来源于stack exchange,提问作者ScootinOn
相关产品推荐
相关产品推荐

