Me he encontrado con este script de verificación de rango. No estoy seguro exactamente dónde lo encontré, pero está construido en Google Docs y un script que automatiza el proceso de verificación de rango. Entiendo un poco de codificación, pero no lo suficiente como para entender realmente esto. Estoy seguro de que alguien aquí puede resolverlo.
El script se ejecuta todas las noches, consulta a Google por mis palabras clave y luego completa las celdas en blanco en una hoja de cálculo de Google. El formato de fecha que aparece es15.06.2014 06:08:21
Me gustaría que sea un formato de fecha con el que estoy más familiarizado, como mm/dd/yyyy
o algo así.
De todos modos, he incursionado en el script (¿en qué idioma está escrito esto? ¿Python?) Y veo que establece una variable llamada curDat
a new Date()
. Según tengo entendido, Date()
es una función que se llama y no se le pasan parámetros, ¿correcto? ¿El problema está en la Date()
función o es solo un caso simple de tener que formatear la fecha en las hojas de cálculo de Google?
Aquí hay una pasta del script completo: es breve:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.insertColumnBefore(5);
var column = sheet.getRange('B13:B');
var values = column.getValues();
var rankingdrop = sheet.getRange("c8").getValue();
var ct = 0;
var colors = [];
while ( values[ct][0] != "" ) {
var formu = sheet.getRange("d" + (ct+13)).getFormula();
sheet.getRange("d" + (ct+13)).setFormula(formu);
Utilities.sleep(3000);
var rank = sheet.getRange("d" + (ct+13)).getValue();
sheet.getRange("e" + (ct+13)).setValue(rank);
var oldrank = sheet.getRange("f" + (ct+13)).getValue();
var colorcell = sheet.getRange("e" + (ct+13));
if(rank > oldrank){
colorcell.setFontColor("#ff0000");
} else if (rank < oldrank){
colorcell.setFontColor("#088A08");
}
if (rank - oldrank >= rankingdrop) {
var mailalert = true;
}
ct++;
}
var sendmail = sheet.getRange("c7").getValue();
if (mailalert == true && sendmail == "yes") {
var emailAddress = sheet.getRange("c9").getValue();
var message = "Ranking alert. Please check your rankings";
var url = sheet.getRange("c4").getValue();
var subject = ("Ranking Alert for " + url);
MailApp.sendEmail(emailAddress, subject, message);
}
var curDat = new Date();
var startOTY = curDat.getFullYear();
var curValue = Date.parse(curDat);
var begDat = new Date(startOTY,0,1);
var begValue = Date.parse(begDat);
var weekNum = parseInt((curValue - begValue)/604800000)+1;
sheet.getRange("e12").setValue(curDat);
}
fuente
Respuestas:
Use el siguiente código para cambiar la notación de fecha.
Código
Referencias
fuente
Se usa
setNumberFormat
para establecer el formato de fecha (o número) para una celda en particular. Este ejemplo pone la fecha de hoy en A1 de la hoja actual, formateada como MM / dd / aaaa:Razones para usar
setNumberFormat
(y noUtilities.formatDate
, como se suele recomendar en Internet):Utilities.formatDate
no cambia el formato de la celda; Convierte su contenido en texto. Si va a utilizar el valor de la fecha en los cálculos, no desea que se convierta en texto.Utilities.formatDate
requiere uno para especificar una zona horaria. Si pone algo como "GMT + 1" y su país observa el horario de verano, puede esperar que surjan errores difíciles de rastrear unos meses más tarde. ConsetNumberFormat
, el valor de la fecha permanece consistente con todos los demás valores de la fecha en la hoja de cálculo, regido por su configuración de zona horaria.fuente
Session.getScriptTimeZone()
como parámetro de zona horaria.Session.getScriptTimeZone()
genera el formato largo (ej. América / Denver) en lugar de "GMT-7", por lo que debe convertirlo de alguna manera.Con tiempo:
fuente