2014-05-05 5 views
5

Sono nuovo agli script di google e devo copiare il foglio attivo corrente su un nuovo foglio e quindi rinominare questo foglio in base al valore di una cella. Il mio problema è che il valore della cella è una data e il codice sottostante funziona, ma invece di rinominare il foglio 30 maggio 2014 restituisce l'equivalente numerico 41789. Come posso incollare la data effettiva.Lo script di Google per copiare e rinominare un foglio e il nome è basato su un riferimento di cella

risposta

0

È necessario creare una nuova data (myValue), quindi cercare nella classe Utilities la funzione di formattazione della data.

+0

Ho apportato le seguenti modifiche e il foglio è stato rinominato in un formato data ma è una data diversa. La cella viene visualizzata come 30 maggio 2014. Il foglio viene rinominato 2014-05-08. Che cosa sto facendo di sbagliato? function CreateNewTimesheet() { // Il seguente codice ridenomina il foglio attivo alla data di Fine mese in base alla cella O3 var myValue = new Date (SpreadsheetApp.getActiveSheet() .getRange ("O3"). getValue); var formattedDate = Utilities.formatDate (new Date(), "GMT", "yyyy-MM-dd"); SpreadsheetApp.getActiveSpreadsheet(). RenameActiveSheet (formattedDate); } – user3604137

+0

leggere sul web su formati di data. stai usando "yyyy-MM-dd" –

2

È necessario formattare il valore in una stringa e quindi utilizzarlo per impostare il nome.

var localTimeZone = "Europe/London"; 
var dateFormatForFileNameString = "yyyy-MM-dd'at'HH:mm:ss"; 

function CreateNewTimesheet() { 

    // The code below makes a duplicate of the active sheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet() 
    SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet(); 

    // The code below will rename the active sheet to Month End date based on cell O3 
var myValue = SpreadsheetApp.getActiveSheet().getRange("O3").getValue(); 
var dateString = getDateString_(myValue); 
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(dateString); 
} 

//Function to get Date as a string 
function getDateString_(dateValue) { 
     return Utilities.formatDate(dateValue, localTimeZone, 
            dateFormatForFileNameString); 
} 

Spero che questo aiuti.

0

Utilizzare semplicemente .getDisplayValue() al posto di .getValue() nel codice dovrebbe fare il trucco.

Ottiene il valore visualizzato nella cella come una stringa, tenendo conto di cose come la formattazione della data, quindi quando lo usi per rinominare il tuo foglio il nome del foglio sarà lo stesso di quello che vedi nella tua cella.