Kurze Antwort
Derzeit sind Variablen keine integrierte Funktion von Google Text & Tabellen, und Google Apps Script, die Plattform zum Erweitern von Google Text & Tabellen, enthält keine Klasse oder Methode, um sie zu verarbeiten.
Alternativen
Alternative 1
Eine Alternative ist die Verwendung eines Textmusters. Sie sollten jedoch sicherstellen, dass es nur mit dem Datum übereinstimmt, das Sie aktualisieren möchten.
Alternative 2
Eine andere Alternative ist die Verwendung der Klasse NamedRange, aber denken Sie daran
- Wenn Sie den Bereich verschieben, verliert er seinen Namen 1 .
- Das Ersetzen von Text in einem benannten Bereich durch mehrere Elemente funktioniert nur beim ersten Mal 2 .
Code:
Der folgende Code, der in einem an ein Google-Dokument gebundenen Skript verwendet werden soll , hat zwei Hauptfunktionen:
- Geben Sie das heutige Datum ein
- Aktualisieren Sie das heutige Datum
Zum Debuggen werden verwendet
- Datum und Uhrzeit statt nur Datum.
- Benutzerdefinierte Menüs zum Auslösen der Hauptfunktionen.
"Bekannte Probleme": Die Aktualisierungsfunktion ersetzt den gesamten Absatz.
Um den Code zu testen, kopieren Sie ihn, gehen Sie zu Google Text & Tabellen, erstellen Sie ein neues Dokument, klicken Sie auf Extras> Skripteditor, wählen Sie Leeres Projekt aus, fügen Sie den Code ein, speichern Sie das Projekt, weisen Sie einen Namen zu und führen Sie die App rechtzeitig aus, um sie zu autorisieren Schließen Sie Ihr Dokument und öffnen Sie es erneut. Ein neues Menü mit dem Namen "Dienstprogramme" wird angezeigt. Von dort aus können Sie die Hauptfunktionen aufrufen.
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());
}
Im Folgenden finden Sie einige Elemente verschiedener Art (Fragen, Spezifikationen usw.), die dazu dienen können, sich inspirieren zu lassen oder auf die "richtige Richtung" zu verweisen, um eine "Lösung" zu finden.
Fußnoten