如何为Google Docs中选中的文本/图片添加书签?
实现Google Docs选中内容(文本/图片)添加书签功能
要实现和Google Docs「插入>书签」一致的功能,针对选中的文本或图片添加书签,可通过Google Apps Script的addBookmark()方法结合选中对象处理,具体代码和逻辑如下:
核心实现代码
function addBookmarkToSelection() { const doc = DocumentApp.getActiveDocument(); const selection = doc.getSelection(); if (!selection) { DocumentApp.getUi().alert("请先选中要添加书签的文本或图片"); return; } const ranges = selection.getRangeElements(); ranges.forEach(rangeElement => { let bookmark; // 处理部分选中的文本 if (rangeElement.isPartial()) { const textElement = rangeElement.getElement().asText(); const startPosition = doc.newPosition(textElement, rangeElement.getStartOffset()); bookmark = doc.addBookmark(startPosition); } else { const element = rangeElement.getElement(); // 处理选中的图片 if (element.getType() === DocumentApp.ElementType.INLINE_IMAGE) { bookmark = doc.addBookmark(element); } // 处理完整选中的段落等元素 else { const startPosition = doc.newPosition(element, 0); bookmark = doc.addBookmark(startPosition); } } // 可自定义书签名称(可选) bookmark.setName("自定义书签"); }); }
代码说明
- 获取选中对象:通过
doc.getSelection()获取用户当前的选中范围,若未选中内容则弹出提示。 - 处理部分文本选中:当选中部分文本时,创建文本起始位置的
Position对象,以此为参数添加书签,和原生功能一致标记在选中文本的起始处。 - 处理图片选中:直接将选中的
INLINE_IMAGE元素传入addBookmark(),书签会关联到该图片。 - 处理完整元素选中:若选中整个段落等元素,在元素起始位置添加书签。
- 自定义书签名称:通过
bookmark.setName()可给书签设置易识别的名称。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

