2017-09-19 4 views
0

Ich würde gerne einen einfachen Countdown basierend auf der Zeit Informationen eingegeben und 30 Tage in der Zukunft ... Zelle "Dat" hätte die Zeit Informationen eingegeben und Cell "Date" würde habe 30 Tage in der Zukunft mit Zelle D mit dem Countdown. Vorläufig konnte ich die eingegebene Zeit und 30 Tage in der Zukunft registrieren. Ich erhalte jedes Mal einen Fehler, wenn ich dies in der Zelle "Time left" ausführe ich wissen, wenn Sie mir helfen können!Countdown-Uhr für Google Sheets

function onEdit(event) 
{ 
var timezone = "GMT-04:00"; 
var timestamp_format = "M/dd/yyyy"; // Timestamp Format. 
var updateColName = "Name"; 
var updateColName2 = "Address"; 
var updateColName3 = "Address"; 
var timeStampColName = "Date"; 
var timeStampColName2 = "Dat"; 
var timeStampColName3 = "Date"; 
var timeStampColName4 = "Time"; 
var updateColName4 = "Address"; 

var timeStampColName5 = "Time Left"; 
var updateColName5 = "Address"; 

var sheet2 = event.source.getSheetByName('Sheet1'); 


var actRng = event.source.getActiveRange(); 
var editColumn = actRng.getColumn(); 
var index = actRng.getRowIndex(); 


var headers2 = sheet2.getRange(1, 1, 1, 
sheet2.getLastColumn()).getValues(); 
var headers4 = sheet2.getRange(1, 1, 5, 
sheet2.getLastColumn()).getValues(); 
var headers5 = sheet2.getRange(1, 1, 4, 
sheet2.getLastColumn()).getValues(); 



var dateCol2 = headers2[0].indexOf(timeStampColName2); 
var dateCol4 = headers4[0].indexOf(timeStampColName4); 
var dateCol5 = headers5[0].indexOf(timeStampColName5); 


var updateCol2 = headers2[0].indexOf(updateColName2); updateCol2 = 
updateCol2+1; 
var updateCol4 = headers4[0].indexOf(updateColName4); updateCol4 = 
updateCol4+1; 
var updateCol5 = headers5[0].indexOf(updateColName5); updateCol5 = 
updateCol5+1; 


if (dateCol2 > -1 && index > 1 && editColumn == updateCol2) 
{ var cell2 = sheet2.getRange(index, dateCol2 + 1); 
    var date2 = Utilities.formatDate(new Date(), timezone, 
timestamp_format); 
cell2.setValue(date2); 
} 


    if (dateCol4 > -1 && index > 1 && editColumn == updateCol4) 
{ var cell4 = sheet2.getRange(index, dateCol4 + 1); 

var date = new Date(); 
var secondDate = new Date(date.setDate(date.getDate()+ 30)); 

cell4.setValue(secondDate); 
Logger.log(secondDate); 


} 
if (dateCol5 > -1 && index > 1 && editColumn == updateCol5) 
{ var cell5 = sheet2.getRange(index, dateCol5 + 1); 

var future = Utilities.formatDate(new 
Date(date.setDate(date.getDate()+ 30)), timezone, timestamp_format); 
//var future = new Date(); // get NOW 
    //future.setDate(future.getDate() + 30); //Add the specified days to 
the current time 



cell5.setFormula('=' + secondDate + '- now()'); 

Hier ist ein Beispiel Link, wo ich versuchte, den Code auszuführen.

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

Lassen Sie mich wissen, wenn Sie noch etwas brauchen, das ich vielleicht verpasst habe!

Vielen Dank im Voraus,

Martin

+0

Welchen Fehler bekommen Sie? – noogui

+0

Nur eine Fehlermeldung in den Zellen. Es nimmt die Informationen zu wörtlich, beispielsweise "Donnerstag, September, 12:00:00 Uhr", so dass es schwierig ist, sie zu subtrahieren oder hinzuzufügen. – Martin111

Antwort

0

Sie könnten wahrscheinlich eine Formel in der Time Left Spalte (D3) von Ihrem Beispiel Blatt

=DAYS(DATEVALUE(A3+30),NOW())

und dann den fill verwenden verwenden nur Griff . Das kleine Quadrat befindet sich rechts unten in der ausgewählten Zelle - um diese Spalte mit der Formel zu füllen. Dies gibt Ihnen die Anzahl der verbleibenden Tage zwischen Dat + 30 days und NOW()