Risposta breve
Al momento, le variabili non sono una funzionalità integrata di Google Documenti e Google Apps Script, la piattaforma per estendere Google Documenti, non include una classe o un metodo per gestirli.
alternative
Alternativa 1
Un'alternativa è utilizzare un modello di testo, ma dovresti essere sicuro che corrisponderà solo alla data che desideri aggiornare.
Alternativa 2
Un'altra alternativa è utilizzare la classe NamedRange ma tenere presente che
- spostare l'intervallo farà perdere il nome 1 .
- la sostituzione del testo in un intervallo denominato con più elementi funziona solo la prima volta 2 .
Codice:
Il seguente codice, destinato ad essere utilizzato in uno script associato a un documento Google, ha due funzioni principali:
- Inserisci la data di oggi
- Aggiorna la data di oggi
Ai fini del debug vengono utilizzati
- data e ora, anziché solo data.
- menu personalizzati per attivare le funzioni principali.
"Problemi noti": la funzione di aggiornamento sostituisce l'intero paragrafo.
Per testare il codice, copiarlo, quindi andare su Google Documenti, creare un nuovo documento, fare clic su Strumenti> Editor di script, selezionare Progetto vuoto, incollare il codice, salvare il progetto, assegnare un nome, eseguire in tempo per autorizzare l'app , chiudi il tuo documento e riapri. Verrà visualizzato un nuovo menu chiamato "Utilità". Da lì puoi chiamare le funzioni principali.
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());
}
Di seguito ci sono alcuni elementi di diverso tipo (domande, specifiche, ecc.) Che potrebbero servire per trarre ispirazione o indicare la "giusta direzione" per trovare una "soluzione"
Le note