Réponse courte
À l'heure actuelle, les variables ne sont pas une fonctionnalité intégrée de Google Docs et Google Apps Script, la plate-forme pour étendre Google Docs, n'inclut pas de classe ou de méthode pour les gérer.
Alternatives
Alternative 1
Une alternative consiste à utiliser un modèle de texte, mais vous devez être sûr qu'il ne correspondra qu'à la date que vous souhaitez mettre à jour.
Alternative 2
Une autre alternative consiste à utiliser la classe NamedRange mais gardez à l'esprit que
- déplacer la gamme lui fera perdre son nom 1 .
- le remplacement de texte dans une plage nommée par plusieurs éléments ne fonctionne que la première fois 2 .
Code:
Le code suivant, destiné à être utilisé dans un script lié à un document Google, a deux fonctions principales:
- Insérez la date du jour
- Mettre à jour la date d'aujourd'hui
À des fins de débogage sont utilisés
- date et heure, au lieu de la date uniquement.
- menus personnalisés pour déclencher les fonctions principales.
"Problèmes connus": la fonction de mise à jour remplace tout le paragraphe.
Pour tester le code, copiez-le, puis accédez à vos documents Google, créez un nouveau document, cliquez sur Outils> Éditeur de script, sélectionnez Projet vierge, collez le code, enregistrez le projet, attribuez un nom, exécutez à temps pour autoriser l'application , fermez votre doc et rouvrez-le. Un nouveau menu appelé "Utilitaires" s'affiche. De là, vous pouvez appeler les fonctions principales.
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());
}
Ci-dessous, il y a quelques éléments de différents types (questions, spécifications, etc.) qui pourraient servir d'inspiration ou indiquer la "bonne direction" pour trouver une "solution"
Notes de bas de page