FAQ
Comment pouvons-nous vous aider ?
Recherche intégrale du site

Générer la date et l’heure de dernière modification d’un champ spécifique dans l’enregistrement

Dans Ragic, vous pouvez définir une valeur par défaut pour remplir automatiquement un champ Date avec la date et l’heure de dernière modification de l’enregistrement. Cependant, si vous souhaitez remplir automatiquement le champ avec la date et l’heure de dernière modification d’un champ spécifique de l’enregistrement, vous devez ajouter un script pour le réaliser.

Veuillez suivre ce guide pour ajouter votre script :

Étape 1 : ouvrir l’éditeur de workflow Ragic

Cliquez avec le bouton droit sur le nom de n’importe quelle feuille et sélectionnez Workflow Javascript, ou cliquez avec le bouton droit sur n’importe quel onglet et sélectionnez Workflow Javascript Global.

Étape 2 : accéder à la page d’édition "Workflow Global"

Étape 3 : coller le code suivant et sauvegarder

Champs indépendants :

function setLastModifiedOnField(pathSheet, observeField, recordField) {
    if (param.getOldValue(observeField) !== param.getNewValue(observeField) || param.isCreateNew()) {
        var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
        function pad2(n) { return n < 10 ? '0' + n : n }
        var fmtValue = today.getFullYear() + "/" +
        pad2(today.getMonth() + 1) + "/" +
        pad2(today.getDate()) + " " +
        pad2(today.getHours()) + ":" +
        pad2(today.getMinutes()) + ":" +
        pad2(today.getSeconds());

        var query = db.getAPIQuery(pathSheet);
        query.addFetchDomains(recordField);
        var entry = query.getAPIEntry(response.getRootNodeId());
        entry.setFieldValue(recordField, fmtValue);
        entry.save();
    }
}

Champs de sous-table :

function setLastModifiedOnSubtableField(pathSheet,observeSubtableKeyField, observeSubtableField, recordField) {
    var list = param.getSubtableEntry(observeSubtableKeyField);
    var entry = param.getUpdatedEntry();
    var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
    function pad2(n) { return n < 10 ? '0' + n : n }
    var fmtValue = today.getFullYear() + "/" +
    pad2(today.getMonth() + 1) + "/" +
    pad2(today.getDate()) + " " +
    pad2(today.getHours()) + ":" +
    pad2(today.getMinutes()) + ":" +
    pad2(today.getSeconds());
    for (var i = 0; i < list.length; i++) {
        if(list[i].getOldValue(observeSubtableField) != list[i].getNewValue(observeSubtableField) && (list[i].getOldValue(observeSubtableField) !== null || list[i].getNewValue(observeSubtableField) !== "" )){
            var subRootNodeId = list[i].getSubRootNodeId();
            entry.setSubtableFieldValue(recordField, subRootNodeId, fmtValue);
            entry.save();
        }
    }
}

Étape 4 : accéder à la page d’édition du "post-worklfow" de la feuille concernée

Si l'URL de votre feuille est : https://www.ragic.com/accountname/tabname/1?PAGEID=wSM (ignorer la partie ?PAGEID=wSM)

Champs indépendants :

Ajoutez le code suivant dans le Post-workflow :

setLastModifiedOnField("/tabname/1", ID du champ spécifique, ID du champ de date de l’enregistrement);

Pour trouver l’ID d’un champ, veuillez consulter cet article.

En prenant l'exemple de "Commandes client" :

Champ Nom du champ ID de champ
Champ spécifique Statut 1009947
Champ de date de l’enregistrement Date de mise à jour du statut 1009948

Le code une fois que les ID des champs y ont été intégrées :

setLastModifiedOnField("/tabname/1", 1009947, 1009948);

Lors de la création d'un nouvel enregistrement, si un champ spécifique est vide, la date de dernière modification sera tout de même générée dans le champ de date d'enregistrement après la sauvegarde. Pour ne déclencher ceci que lors des mises à jour, ajustez le code comme suit :

if(param.getOldNodeId(Specific Field ID) !== -1 || param.getNewValue(Specific Field ID)){
    setLastModifiedOnField("/tabname/1", ID du champ spécifique, ID du champ de date de l’enregistrement);
}

Champs de sous-table :

Ajoutez le code suivant au post-workflow:

setLastModifiedOnSubtableField("/tabname/1", champ clé de la sous-table, ID du champ spécifique, ID du champ de date de l’enregistrement);

Remarque : Seuls les champs de sous-table peuvent être sélectionnés comme "champ de date de l’enregistrement".

Vous pouvez trouver le champ clé de la sous-table en téléchargeant le dictionnaire des données. Pour reprendre notre exemple précédent, le champ clé est 1009900.

Ainsi, comme l'indique l'illustration ci-dessus :

Champ Nom du champ ID du champ
Champ spécifique Statut 1009947
Champ de date de l’enregistrement Date de mise à jour du statut 1009948

Le code après avoir renseigné le champ clé de la sous-table et l'ID du champ:

setLastModifiedOnSubtableField("/tabname/1", 1009900, 1009947, 1009948);

Lors de la création d'un nouvel enregistrement, si un champ spécifique est vide, la date de dernière modification sera tout de même générée dans le champ de date d'enregistrement après la sauvegarde. Pour ne déclencher ceci que lors des mises à jour, ajustez le code comme suit :

var paramList = param.getSubtableEntry(Subtable Key Field);
var list = paramList.toArray();
for(var i = 0; i < list.length; i ++) {
    if(paramList[i].getOldNodeId(Specific Field ID) !== -1 param.getNewValue(Specific Field ID) !== ""){ 
        setLastModifiedOnSubtableField("/tabname/1" , champ clé de la sous-table, ID du champ spécifique, ID du champ de date de l'enregistrement); 
    }
}

Étape 5 : sauvegarder le post-workflow

N'oubliez pas de sauvegarder vos modifications avant de quitter.


Note:

1. Si une erreur du type TypeError: null has no such function "addFetchDomains" in at line number 25 apparaît lors de la sauvegarde, vérifiez et confirmez si /tabname/1 est correct.

2. La date et l'heure de mise à jour seront enregistrées selon le Fuseau horaire local de l'organisation défini dans les paramètres d'organisation.

Donnez-nous votre avis sur Ragic

Que souhaitez-vous partager avec nous ?(obligatoire, choix multiples)

Veuillez donner des explications détaillées pour les éléments sélectionnés ci-dessus :

Captures d’écran pour mieux comprendre votre retour:

Merci pour votre précieux retour !

    Essayer Ragic gratuitement

    Connectez-vous avec Google

    Conditions d'utilisation | Politique de confidentialité