google-apps-script - script - grabar fecha y hora cuando se ingresa un dato en drive
Insertar fecha y hora en el documento de google (8)
Me gustaría insertar una marca de tiempo (fecha y / o hora) en Documentos de Google. La documentación de soporte () dice que debe haber un atajo de teclado, pero no funciona en mi entorno (Win7 + IE9).
¿Alguien puede proporcionarme un script de Google Apps para lograr esto?
Aquí hay una versión editada (del que ya se proporcionó) que imprime un sello de fecha que incluye la hora.
Aquí hay un ejemplo de la salida: 2:43:21 AM EST 26-03-2014
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu(''Insert Date'')
.addItem(''Insert Date'', ''insertDate'')
.addToUi();
}
function insertTime() {
var d = new Date();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
// OR:
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor''s containing element doesn''t allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
var date = currentTime + " " + dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert(''Cannot insert text at this cursor location.'');
}
} else {
DocumentApp.getUi().alert(''Cannot find a cursor in the document.'');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
Crear una hoja de cálculo hoy en google docs. Ponga la fecha en B1 como Hoy () Formatee en C1 usando la función Texto (B1, "dddd, mmmm d, aaaa") Luego use la siguiente secuencia de comandos (necesitará la url de la Hoja de cálculo de hoy)
function myFunction() {
var doc = DocumentApp.getActiveDocument();
var body1 = doc.getBody();
var style1 = {};
style1[DocumentApp.Attribute.BOLD] = true;
var text1 = doc.editAsText();
body1.appendHorizontalRule();
var wb = SpreadsheetApp.openByUrl(''spreadsheet url'');
var ss = wb.getSheetByName(''Today'');
var r = ss.getRange(''C1'');
var date1 = r.getValues();
var par1 =body1.appendParagraph(date1[0]);
par1.setAttributes(style1);
}
Debido a que se están utilizando pulsaciones de teclas adicionales para insertar la fecha en el menú, mi solución es un archivo de proceso por lotes, sts.cmd, que almacena la fecha y hora en el portapapeles cuando se llama, lo que permite un Windows + R fácil, pts, Ctrl + V para obtener y pegar. Si está agregando teclas adicionales para obtener la fecha en el documento de todos modos, también puede pegarlo. El código es
@ECHO OFF
for /f "tokens=1-12 delims=/:. " %%d in ("%time%") do SET MYTIME= %%d:%%e:%%f
for /f "tokens=1-12 delims=/:. " %%d in ("%date%") do SET MYDATE= %%g-%%e-%%f
SET MYTS=%MYDATE%%MYTIME%
ECHO | SET /p dummyname=%MYTS%|clip
Esto funciona para mí hasta que GDocs presente una función incrustable que actualizará la fecha de visualización a la fecha actual cada vez que se abre el documento.
En MacOS, utilicé Automator.
Creé un servicio que funciona con Chrome, no toma entrada y ejecuta un script de shell y envía el resultado al portapapeles. El script de shell es muy básico:
DateTime=`date "+%Y-%m-%d %H:%M"`
echo $DateTime
Podría haberlo hecho sin la variable intermedia y simplemente ejecutar el comando de fecha, pero tuve la idea de que podría querer hacer un procesamiento y un formateo adicionales. Tenga en cuenta que si desea incluir espacios en el formato de la cadena de fecha, el argumento de formato debe estar entre comillas. La captura de pantalla utiliza una barra inferior en su lugar.
Con la secuencia de comandos guardada, fui a Configuración del sistema> Teclado> Accesos directos, encontré mi script DateTime2CB.workflow en la sección de texto y le di una tecla de acceso directo. No hay una manera fácil de descubrir qué teclas de acceso rápido están en uso.
Pude haberlo hecho para cualquier aplicación (y si intento usar otras aplicaciones, aún puedo hacerlo), pero por ahora solo es Chrome. También podría haber hecho que la secuencia de comandos de shell fuera la salida de la fecha al portapapeles, pbcopy en Mac, como se indicó anteriormente (usando "clip"). He probado ambos métodos y funcionan.
Agregué el mismo script a otra Mac y fue configurado para insistir en que el archivo de Automator ( nombre .workflow) se guarde en iCloud. en ese contexto, no estaba listado en la configuración del teclado. Para solucionarlo, tuve que volver a abrir el archivo guardado de iCloud en Automator usando Abrir> Reciente. Me preguntó si quería instalar el archivo en Servicios. Una respuesta afirmativa en ese punto lo guardó en mi sistema local y pude encontrarlo en Configuración> Teclado> Shorcuts> Servicios.
Espero que esto ayude a otros usuarios de Mac.
agosto
Esto funciona bien
En Google Docs: Herramientas -> Abrir Editor de scripts y guardar este script
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu(''Custom Menu'')
.addItem(''Insert Date'', ''insertDate'')
.addToUi();
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor''s containing element doesn''t allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var date = dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert(''Cannot insert text at this cursor location.'');
}
} else {
DocumentApp.getUi().alert(''Cannot find a cursor in the document.'');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
Recargue el documento, acepte los permisos.
No estoy seguro de si un complemento pertenece a la categoría Google Apps Script que estaba solicitando, bug Text Factory proporciona la función para insertar un sello de tiempo.
Para Documentos, es probable que no tenga suerte, ya que no parece haber support.google.com/drive/bin/… , y falta soporte para secuencias de comandos dentro de Documentos (las Hojas de cálculo serían una historia diferente). Ya que estás en Windows, puedes servirte de autohotkey . Este video , aunque es demasiado largo, muestra la asignación de un combo de tecla rápida global para insertar la fecha actual en cualquier lugar. Con eso, puede insertar su fecha / hora en cualquier lugar que desee mientras usa su sistema Windows. (Puede personalizarlo para que solo esté activo en ciertas aplicaciones, como IE, si quiere volverse loco con él)
Prueba esto:
function insertTimestamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getActiveCell();
cell.setValue(new Date());
// sets the cells format to month/day/year.
// Remove if you want time inserted as well
cell.setNumberFormat("MM/dd/yyyy")
}
Esto funciona en hojas de cálculo, no estoy seguro si estaba buscando otros documentos.