Với việc giới thiệu các tập lệnh bị ràng buộc bởi tài liệu, giờ đây bạn có thể tạo hàm đánh dấu văn bản được gọi từ trình đơn tùy chỉnh.
Tập lệnh này đã được sửa đổi từ một trong số this answer và có thể được gọi từ giao diện người dùng (không có tham số) hoặc tập lệnh.
/**
* Find all matches of target text in current document, and highlight them.
*
* @param {String} target (Optional) The text or regex to search for.
* See Body.findText() for details.
* @param {String} background (Optional) The desired highlight color.
* A default orange is provided.
*/
function highlightText(target,background) {
// If no search parameter was provided, ask for one
if (arguments.length == 0) {
var ui = DocumentApp.getUi();
var result = ui.prompt('Text Highlighter',
'Enter text to highlight:', ui.ButtonSet.OK_CANCEL);
// Exit if user hit Cancel.
if (result.getSelectedButton() !== ui.Button.OK) return;
// else
target = result.getResponseText();
}
var background = background || '#F3E2A9'; // default color is light orangish.
var doc = DocumentApp.getActiveDocument();
var bodyElement = DocumentApp.getActiveDocument().getBody();
var searchResult = bodyElement.findText(target);
while (searchResult !== null) {
var thisElement = searchResult.getElement();
var thisElementText = thisElement.asText();
//Logger.log(url);
thisElementText.setBackgroundColor(searchResult.getStartOffset(), searchResult.getEndOffsetInclusive(),background);
// search for next match
searchResult = bodyElement.findText(target, searchResult);
}
}
/**
* Create custom menu when document is opened.
*/
function onOpen() {
DocumentApp.getUi().createMenu('Custom')
.addItem('Text Highlighter', 'highlightText')
.addToUi();
}
Cảm ơn sự giúp đỡ của bạn, balajiboss. Rất tiếc, lỗi trên index = text.indexOf (tìm kiếm, chỉ mục + 1); có lỗi: Không thể tìm thấy hàm indexOf trong đối tượng Văn bản. – user1523207
indexOf hoạt động trên chuỗi. Bạn có thể sử dụng phương thức getText() để lấy văn bản của tài liệu dưới dạng một chuỗi. – balajiboss