Gostaria de definir uma função personalizada no Google Sheet. Essa função deve fazer algo muito simples, mas ainda não consegui descobrir como fazê-lo. Estou muito confuso com todas as respostas que li, porque não consigo encontrar uma referência clara sobre como lidar com datas nos scripts do google.
Pelo que entendi, manipulações básicas de datas podem ser feitas com:
new Date()
: pelo que entendi, define um objeto que possui algumas propriedades. Não sei como usar a data de uma célula e convertê-la como um objeto.Utilities.formatDate()
: isso é para alterar o formato da data vista como uma sequência .- a biblioteca
Moment
( http://momentjs.com/ )
No final, como posso inserir duas datas (por exemplo 31/01/2016
) e, digamos, encontrar o máximo entre as duas e extrair o mês da primeira?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
Também estou interessado se alguém puder explicar os esboços de como lidar com datas ou indicar uma boa referência.
google-sheets
google-apps-script
compreendido
fonte
fonte
Respostas:
Obtendo e configurando valores de data e hora
Sempre que seu script chama
.getValue()
uma célula formatada como data, data e hora ou duração, ele obtém um objeto Data JavaScript . Você pode aplicar vários métodos listados nessa página MDN a esse objeto, inclusivegetMonth()
para o mês. Exemplo:Por outro lado, você pode atribuir um objeto Date a uma célula usando
setValue
, e ele será automaticamente formatado como tal.Fusos horários
O registro de data e hora no Planilhas Google está no fuso horário local, definido em Arquivo> Configurações da planilha. O script também opera em um fuso horário, que pode ser diferente e é encontrado em Arquivo> Propriedades do projeto no editor de script. Se esses fusos horários não concordarem, você terá um problema com os carimbos de data e hora.
Para verificar se os fusos horários estão de acordo, você pode comparar os dois manualmente ou fazer algo assim:
Isso insere a fórmula
=date(2015,1,1)
na célula A1. O resultado será 01-01-2015 00:00:00 no fuso horário da planilha. O script obtém a data e extrai as horas no horário local do script. Se os fusos horários concordarem, você deverá ver 0,0 no log.fonte
Resposta curta
Abaixo, duas funções personalizadas são apresentadas como exemplos de como o Planilhas Google e o Script do Google Apps podem funcionar com datas.
Exemplo 1: obter a data mais recente
Exemplo 2: obter o mês da data mais recente
Breve explicação
No primeiro exemplo, o método JavaScript Math.max faz o trabalho.
Se você deseja obter uma data como resultado, um objeto de data é criado usando o novo Date () .
No segundo exemplo, um objeto de data é atribuído a uma variável, o método JavaScript getMonth () é usado para obter o índice do mês. Lembre-se de que o JavaScript usado
0
para o elemento inicial0
é o mesmo para janeiro,1
fevereiro e assim por diante.Referências
fonte
date1
,date2
passados como números (normalmente: 54243)? ii) Agora tentei extrair o mês dedate2
uso,date2.getMonth()
mas quando a célula está01/12/2015
ela retorna 10 e 11 para02/12/2015
. Eu acho que é por causa do fuso horário. A função da folhamonth()
é muito mais simples.myfunction2
retorna 10 e quando o máximo é 02/12/2015, ele retorna 11. Embora eu esteja bem com o 11, não entendo Por que retorna 10 para 01/12/2015. Como eu disse, acredito que isso se deva à GMT, mas não tenho certeza. Estou esquecendo de algo?