es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Formato de fecha en Google Sheets utilizando AppScript

Esto está relacionado con esta publicación. Estoy tratando de exportar datos en hojas de cálculo separadas. Cuando exporto la hoja de cálculo, funciona, pero no copia el formato de fecha.

Este es el resultado de la celda después de ejecutar el script y exportarlo.

function PrintMultiple() {

  const srcSs = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = srcSs.getSheetByName("TEMPLATE");
  const values = sheet.getRange("C2").getDataValidation().getCriteriaValues()[0].getValues().flat().filter(String);
  const dstSs = SpreadsheetApp.create("SMRtempSpreadsheet");

  SpreadsheetApp.getActive().toast("A punto de realizar una acción... Por favor, espere...");

  values.forEach(v => {
    sheet.getRange("C2").setValue(v);
    SpreadsheetApp.flush();
    const tempSheet = sheet.copyTo(srcSs);
    const range = tempSheet.getDataRange();
    range.copyTo(range, {contentsOnly: true});
    tempSheet.getRange("B2:2").clear().clearDataValidations();
    tempSheet.getDrawings().forEach(e => e.remove());
    tempSheet.deleteColumn(1);
    tempSheet.deleteRow(1);
    tempSheet.deleteRow(2);
    tempSheet.deleteRow(3);
    tempSheet.copyTo(dstSs);
    srcSs.deleteSheet(tempSheet);
  });
  dstSs.deleteSheet(dstSs.getSheets()[0]);
}

Sin embargo, cuando formateo la celda como FECHA, se ve así.

¿Cómo puedo exportarlo como una FECHA sin formatear cada uno manualmente?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para exportar los datos con el formato de fecha, puedes modificar el script existente para establecer explícitamente el formato de celda como formato de fecha utilizando el método setNumberFormat(). Aquí tienes el script modificado:

    function PrintMultiple() {
    
      const srcSs = SpreadsheetApp.getActiveSpreadsheet();
      const sheet = srcSs.getSheetByName("TEMPLATE");
      const values = sheet.getRange("C2").getDataValidation().getCriteriaValues()[0].getValues().flat().filter(String);
      const dstSs = SpreadsheetApp.create("SMRtempSpreadsheet");
    
      SpreadsheetApp.getActive().toast("A punto de tomar medidas... Por favor espera...");
    
      values.forEach(v => {
        sheet.getRange("C2").setValue(v);
        SpreadsheetApp.flush();
        const tempSheet = sheet.copyTo(srcSs);
        const range = tempSheet.getDataRange();
        range.copyTo(range, {contentsOnly: true});
    
        // Establecer el formato de fecha para el rango requerido
        tempSheet.getRange("D:D").setNumberFormat("dd-MMM-yyyy"); 
    
        tempSheet.getRange("B2:2").clear().clearDataValidations();
        tempSheet.getDrawings().forEach(e => e.remove());
        tempSheet.deleteColumn(1);
        tempSheet.deleteRow(1);
        tempSheet.deleteRow(2);
        tempSheet.deleteRow(3);
        tempSheet.copyTo(dstSs);
        srcSs.deleteSheet(tempSheet);
      });
      dstSs.deleteSheet(dstSs.getSheets()[0]);
    }
    

    En este script, hemos agregado la siguiente línea de código para establecer el formato de fecha para el rango en la columna D:

    tempSheet.getRange("D:D").setNumberFormat("dd-MMM-yyyy");
    

    Este código establece el formato para toda la columna en formato dd-MMM-yyyy (por ejemplo, 01-ene-2022).

    Al agregar esta línea, los datos exportados estarán en el formato de fecha requerido.

Comments are closed.