2017-09-16 3 views
0

Time SheetComment cliquer sur une cellule google vide et obtenir le temps réel, MAINTENANT()?

Je travaille pour une compagnie de transport et ce que je suis en train de réaliser est que chaque fois qu'un login conducteur ou mobiles sur la radio bidirectionnelle, je veux cliquer sur la cellule vide et obtenir le temps réel. Je sais qu'il y a une fonction Now(), dans google sheets mais si j'utilise que toutes les cellules auront la même valeur, je veux avoir l'heure actuelle quand je clique sur la cellule vide.

J'utilise l'éditeur de script pour créer des boutons pour une solution de contournement qui me montrer et à temps, mais je veux conserver le format original de la feuille, voici le code ci-dessous:

function setValue(cellName, value){ 
     SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value); 
    } 

    function getValue(cellName){ 
     return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue(); 
    } 

    function getNextRow(){ 
     return SpreadsheetApp.getActiveSpreadsheet().getLastRow() + 1; 
    } 

    function setGeorge(){ 
     setValue('M1','George,CSH2501') 
    } 
    function setTerry(){ 
     setValue('M1','Terry,CSH2502') 
    } 

    function setDavid(){ 
     setValue('M1','David,PSH3502') 
    } 

    function setSandra(){ 
     setValue('M1','Sandra,PSH3508') 
    } 
    function setElioCalle(){ 
     setValue('M1','ElioCalle,PSH3504') 
    } 
    function setWarren(){ 
     setValue('M1','Warren,PSH3501') 
    } 
    function setShu(){ 
     setValue('M1','Shu,PSH3503') 
    } 
    function setPaul(){ 
     setValue('M1','Paul Prkash,PSH3507') 
    } 
    function setMei(){ 
     setValue('M1','Mei Tsang,PSH3506') 
    } 
    function setJames(){ 
     setValue('M1','James Clark,PSH3505') 
    } 
    function setElvira(){ 
     setValue('M1','Elvira,PSH3509') 
    } 
    function addRecord(b, c, d){ 
     var row = getNextRow(); 
     setValue('A'+ row, b); 
     setValue('B'+ row, c); 
     setValue('C'+ row, d); 
    } 
    function punchIn(){ 
    addRecord(getValue('M1'), new Date(), 'IN'); 
    } 
    function punchOut(){ 
    addRecord(getValue('M1'), new Date(), 'Out'); 
    } 

Et les résultats sont les suivants: enter image description here

+0

Je ne sais pas si vous pouvez le faire. Comme une solution de contournement mettez ''= NOW()' dans toutes les cellules puis supprimez le '' 'si nécessaire –

+0

C'est une très bonne idée, j'aime ça et c'est beaucoup moins fastidieux que de taper le temps chaque fois que quelqu'un se connecte, cependant, est-il possible de créer un bouton radio avec une fonctionnalité (IN & OUT) comme ci-dessous: – Girum

+0

Ce raccourci est très pratique (Ctrl + Shift +:?) @pnuts, mais existe-t-il un moyen de changer ce raccourci en comportement de clic? – Girum

Répondre

0

= Now() est une fonction volatile, chaque fois que vous modifiez des données dans la feuille de calcul ou actualisez la feuille excel recalcule. La seule façon de surmonter est par un script, j'ai créé des boutons à l'aide de l'outil de dessin et les fonctions assignées Punchin et PunchOut pour chaque fois qu'un mobiles pilote et efface:

function punchIn(){ 
var sheet = SpreadsheetApp.getActiveSheet(); 
var now = new Date(); 
    sheet.getRange('E3').setValue(now); 
} 

function punchOut(){ 
var sheet = SpreadsheetApp.getActiveSheet(); 
var now = new Date(); 
    sheet.getRange('H3').setValue(now); 
} 

La seule chose était que je dois le faire pour tous les cellule et chaque bouton que vous pouvez voir de l'image ci-dessous. S'il existe un moyen de simplifier le code, toute suggestion serait appréciée.

enter image description here

+0

Je pensais que cela fonctionnerait, mais Now() est une fonction volatile et lorsque vous entrez la valeur d'autres cellules, l'heure des cellules change à l'heure actuelle – Girum