2017-06-30 6 views
0

J'ai une colonne dans Google Sheets que lorsque je saisis les initiales, le script date dans la colonne suivante, puis, à travers des formules de cellules existantes de valeurs variables (exemple : = B9-Time (4,4,0)) reflète plusieurs autres horodatages simulés décalés. Le problème que j'ai maintenant est que toutes les entrées suivantes doivent être en temps réel et estampillées en tant que telles, ce qui m'empêche d'utiliser une astuce de fuseau horaire pour le faire. Fondamentalement, je n'ai besoin que du script pour afficher un horodatage moins quatre heures (ceci est pour ma cellule "setup" qui automatise un remplissage de temps simulés) mais fonctionne normalement pour toutes les entrées futures (ceci est pour une simulation d'administration de médicaments si la compréhension du but aide à clarifier ma question).Besoin d'horodater dans les feuilles Google mais refléter quatre heures plus tôt

Voici mon script de travail (moins la possibilité de soustraire quatre heures de cours):

if(x.getName() == "Vitals") { //checks that we're on the correct sheet 
    var y = x.getActiveCell(); 
    if(y.getColumn() == 1) { //checks the column 
     var nextCell = y.offset(0,1); 
     if(nextCell.getValue() === '') //is empty? 
     nextCell.setValue(new Date()); 
    } 
    } 

Répondre

0

Ce code est i utilisé pour tester. Vous pouvez retirer la partie d'ajustement des heures.

function onEdit(e) { 
    x=e.source.getSheetName() 
    if(x == "Vitals") { //checks that we're on the correct sheet 
    var y = e.range.getSheet().getActiveCell(); 
    if(y.getColumn() == 1) { //checks the column 
     var nextCell = y.offset(0,1); 
     if(nextCell.getValue() === '') //is empty? 
     var d = new Date();// d is now a date object 
     var h=d.getHours() 
     var m=d.getMinutes() 
     var s=d.getSeconds() 
     var nh=h-4 //subtract 4 hrs 
     d.setHours(nh,m,s,0); //set the new hours , min Secs and milliSecs as well 
     nextCell.setValue(d); 
    } 
    } 
} 

Voici un lien vers ma feuille de calcul de test partagée. Faites une copie et essayez-le.

https://docs.google.com/spreadsheets/d/1sMcd0ivy_LE8kkCto264ETjzMubRniWcdFYzYoh-Cj8/edit?usp=sharing

+0

Seriez-vous capable de me diriger comment l'insérer dans le bon endroit? Un autre monsieur m'a dit que je devais assigner ces déclencheurs d'événement à la colonne/cellule respective parce qu'ils ne fonctionneront pas dans l'éditeur de script. Lorsque j'efface la section VITALS de mon script et ajoute celle-ci à ma première cellule dans ma colonne "initiales" (colonne 1) comme valeur d'étalonnage sous fotmatting conditionnel -> formule personnalisée, rien ne se passe dans la case offset (colonne 2). Merci encore! – Paul

+0

J'ai ajouté un lien vers ma feuille de test à la réponse. Si cela ne répond pas à votre question, partagez votre feuille de calcul et je vais jeter un coup d'oeil. –

+0

Accédez à votre éditeur de script. Placez votre curseur à la fin de la dernière ligne de la fonction onOpen (ligne 19). Entrez et une nouvelle ligne sera créée. Copiez et collez le code ci-dessus. Économisez et vous devriez être bon pour aller. Vous trouverez ci-dessous un lien vers une copie de votre feuille de calcul. https://docs.google.com/spreadsheets/d/1y0hnOS4NWWQOjocSNAge3T7k2ItZktBvZ37jXyCdcbo/edit?usp=sharing –