Eu gostaria de definir uma função personalizada no Planilhas Google. Esta função deveria 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, as manipulações básicas de data podem ser feitas com:
-
new Date()
: pelo que entendi, define um objeto que possui algumas propriedades. Não sei usar a data de uma célula e convertê-la como tal objeto. -
Utilities.formatDate()
: isso é para alterar o formato da data vista como uma string . - 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 os dois e extrair o mês do primeiro um?
function myfun(date1,date2) { // month = month of date 1 // return maximum(date1,date2); }
Também estou interessado se alguém puder explicar os contornos de como lidar com datas ou indicar uma boa referência.
Comentários
- Veja o resposta por Sergei insas para Como ler os valores de tempo corretos da planilha do Google
- Obrigado. Não há outra maneira? ' s parece incrivelmente complicado extrair, por exemplo, o mês de uma data! Além disso, deve levar em consideração o fuso horário … Isso ' é um pouco distorcido para operações de data simples (fixas).
- Eu adicionei uma resposta focada em o código do caso que foi exposto, mas a questão é dois ampla (manipulação de data). Talvez você deva começar procurando por snippets de código JavaScript e cursos online.
- @Rub é n Eu entendo. Eu não queria fazer uma " escrever código para mim " pergunta, então estava procurando informações gerais que eu realmente não encontrei. Sergei insas ' a postagem que você indicou é útil.
- Sobre informações gerais sobre JavaScript, consulte developer.mozilla. org / en-US / docs / Web / JavaScript e sobre o Google Apps Script, consulte developers.google.com/apps-script .
Resposta
Como obter e definir valores de data e hora
Sempre que seu script chamar .getValue()
em uma célula formatada como data, data-hora ou duração, obtém um objeto Data JavaScript . Você pode então aplicar vários métodos listados na página MDN a este objeto, incluindo getMonth()
para o mês. Exemplo:
var sheet = SpreadsheetApp.getActiveSheet(); var value = sheet.getRange("A1").getValue(); // is a Date object Logger.log([value.getMonth(), value.getHours(), value.getUTCHours()]); // examples of available methods
Por outro lado, você pode atribuir um objeto Date a uma célula usando setValue
, e será formatado automaticamente como tal.
sheet.getRange("B2").setValue(new Date()); // current timestamp
Fusos horários
O carimbo de data / hora no Planilhas Google está no fuso horário local, que é definido em Arquivo> Configurações da planilha. O script também opera dentro de 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 corresponderem, você terá um problema com carimbos de data / hora.
Para verificar se os fusos horários estão de acordo, você pode comparar os dois manualmente ou fazer algo assim:
var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setFormula("=date(2015,1,1)"); Logger.log(sheet.getRange("A1").getValue().getHours());
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 então obtém a data e extrai as horas no horário local do script. Se os fusos horários forem iguais, você deverá ver 0,0 no log.
Comentários
- obrigado, trabalhe para mim, Uma pergunta adicional: eu quero verificar Um monte de células, como intervalo (2, 1, 30, 20) .getValues; – como conseguir isso?
Resposta
Resposta curta
Abaixo, duas funções personalizadas são apresentadas como exemplos de como o Google Sheets e o Google Apps Script podem funcionar com datas.
Exemplo 1: Obter a data mais recente
function myFunction(date1,date2) { return new Date(Math.max(date1,date2)) }
Exemplo 2: Obtenha o mês da data mais recente
function myFunction2(date1,date2) { var date = new Date(Math.max(date1,date2)); return date.getMonth(); }
Breve explicação
No primeiro exemplo, a Math.max método JavaScript faz o trabalho.
Se o pedido para obter uma data como resu Nesse caso, um objeto de data é criado usando new Date () .
No segundo exemplo, um objeto de data é atribuído a uma variável , então o método JavaScript getMonth () é usado para obter o índice do mês.Lembre-se de que o JavaScript usa 0
para o elemento inicial, então 0
é para janeiro, 1
para fevereiro e assim por diante.
Referências
- Funções personalizadas no Planilhas Google – Guias de script do Google Apps
- Compare duas datas com JavaScript – StackOverflow
Comentários
- i)
date1
,date2
são passados como números (normalmente: 54243)? ii) Agora tentei extrair o mês dedate2
usandodate2.getMonth()
, mas quando a célula é01/12/2015
retorna 10 e 11 para02/12/2015
. Acho que ' s por causa do fuso horário. A função de planilhamonth()
é muito mais simples. - O Planilhas Google trata as datas como números serializados da mesma forma que o JavaScript, mas cada um tem uma data de início diferente. Portanto, se você deseja usar funções de data JavaScript, primeiro deve converter a data da planilha em uma data JavaScript. Como você já notou, o caminho mais fácil é usar funções de planilha para lidar com datas de planilha e funções de JavaScript para lidar com datas de JavaScript.