Câu trả lời ngắn
Tại thời điểm này, các biến không phải là một tính năng tích hợp của Google Docs và Google Apps Script, nền tảng để mở rộng Google Docs, không bao gồm một lớp hoặc phương thức để xử lý chúng.
Lựa chọn thay thế
Phương án 1
Một cách khác là sử dụng một mẫu văn bản nhưng bạn nên chắc chắn rằng nó sẽ chỉ khớp với ngày mà bạn muốn cập nhật.
Phương án 2
Một cách khác là sử dụng lớp NamedRange nhưng hãy nhớ rằng
- di chuyển phạm vi sẽ làm cho nó mất tên 1 .
- thay thế văn bản trong một phạm vi được đặt tên bằng nhiều yếu tố chỉ hoạt động lần đầu tiên 2 .
Mã số:
Đoạn mã sau, dự định được sử dụng trong tập lệnh được liên kết với Tài liệu Google, có hai chức năng chính:
- Chèn ngày hôm nay
- Cập nhật ngày hôm nay
Đối với mục đích gỡ lỗi đang được sử dụng
- ngày và giờ, thay vì chỉ ngày
- menu tùy chỉnh để kích hoạt các chức năng chính.
"Các vấn đề đã biết": Hàm cập nhật thay thế toàn bộ đoạn văn.
Để kiểm tra mã, sao chép mã, sau đó truy cập Google Docs của bạn, tạo tài liệu mới, nhấp vào Công cụ> Trình chỉnh sửa tập lệnh, chọn Dự án trống, dán mã, lưu dự án, gán tên, chạy đúng giờ để ủy quyền cho ứng dụng , đóng tài liệu của bạn và mở lại. Một menu mới gọi là "Tiện ích" sẽ được hiển thị. Từ đó bạn có thể gọi các chức năng chính.
function onOpen() {
// Add a menu with some items, some separators, and a sub-menu.
DocumentApp.getUi().createMenu('Utilities')
.addItem('Insert Today\'s Date', 'insertTodayAtCursor')
.addItem('Update Today\'s Date', 'setTodayNamedRange')
.addToUi();
}
function todayDate(){
return Utilities.formatDate(new Date(), "GMT-5", "yyyy-MM-dd'T'HH:mm:ss'Z'"); // "yyyy-MM-dd"
}
/**
* Inserts the today's date at the current cursor location and create a NamedRange.
*/
function insertTodayAtCursor() {
var str = 'testToday';
var doc = DocumentApp.getActiveDocument();
var cursor = doc.getCursor();
if (cursor) {
// Attempt to insert today's date at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
var date = todayDate();
var element = cursor.insertText(date);
if (element) {
var rangeBuilder = doc.newRange();
rangeBuilder.addElement(element);
return doc.addNamedRange(str, rangeBuilder.build());
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
function setTodayNamedRange(){
var str = 'testToday';
var doc = DocumentApp.getActiveDocument();
// Retrieve the named range
var namedRanges = doc.getNamedRanges();
var newRange = doc.newRange();
var date = todayDate();
for(var i=0; i<namedRanges.length; i++){
if(namedRanges[i].getName() == str){
var rangeElement = namedRanges[i].getRange().getRangeElements();
for (var j=0; j<rangeElement.length; j++){
var element = rangeElement[j].getElement().asText().editAsText().setText(date);
newRange.addElement(element);
}
}
}
doc.addNamedRange(str, newRange.build());
}
Bên dưới có một số mặt hàng thuộc loại khác nhau (câu hỏi, thông số kỹ thuật, v.v.) có thể phục vụ để lấy cảm hứng hoặc chỉ ra "hướng đi đúng" để tìm "giải pháp"
Chú thích