Короткий ответ
В настоящее время переменные не являются встроенной функцией Google Docs, а Google Apps Script, платформа для расширения Google Docs, не включает в себя класс или метод для их обработки.
альтернативы
Альтернатива 1
Один из вариантов - использовать текстовый шаблон, но вы должны быть уверены, что он будет соответствовать только дате, которую вы хотите обновить.
Альтернатива 2
Другой альтернативой является использование класса NamedRange, но имейте в виду, что
- перемещение диапазона приведет к тому, что он потеряет свое имя 1 .
- замена текста в именованном диапазоне несколькими элементами работает только в первый раз 2 .
Код:
Следующий код, предназначенный для использования в скрипте, привязанном к Документу Google, имеет две основные функции:
- Вставьте сегодняшнюю дату
- Обновите сегодняшнюю дату
В целях отладки используются
- дата и время, а не только дата.
- пользовательские меню для запуска основных функций.
«Известные проблемы»: функция обновления заменяет весь абзац.
Чтобы проверить код, скопируйте его, затем перейдите в Google Docs, создайте новый документ, нажмите Инструменты> Редактор сценариев, выберите Пустой проект, вставьте код, сохраните проект, назначьте имя, запустите вовремя, чтобы авторизовать приложение закройте документ и откройте снова. Появится новое меню «Утилиты». Оттуда вы можете вызвать основные функции.
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());
}
Ниже приведены некоторые предметы различного рода (вопросы, спецификации и т. Д.), Которые могут послужить источником вдохновения или указать «правильное направление» для поиска «решения».
Сноски