A data é copiada como “intervalo” na macro / script do Planilhas Google

Nov 05 2020

Estou lutando com um possível problema menor no Google Sheets. Eu simplesmente quero copiar um valor de data para outra célula, sem alterar o formato da data, etc.

No entanto, se eu salvar a data em uma var, o Logger encontrará "Intervalo". Também tentei formatar, mas acabei com datas erradas, datas atuais ou simplesmente nada.

Dica: a célula 63,4 contém um valor de data, formatado como uma data na planilha.

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4);
  var row = start.getRow();
  var col = start.getColumn();
  Logger.log(start);
  
  start = new Date(0);
  ss.getRange('C2').setValue(start);
  
  ...
  
}

Depois de executar esse código, o log mostra "RANGE".

Você tem uma ideia de como resolver isso? Acho que não estou salvando o celular corretamente, mas não encontrei mais ideias.

Respostas

2 Marios Nov 05 2020 at 06:28

Explicação / problema:

  • Isso ocorre porque você não está obtendo o valor e getRange retorna uma instância da classe de intervalo .
  • Lembre-se de que, se o valor for uma data, convém usar getDisplayValue () .

Solução:

Substituir:

var start = ss.getRange(63,4);

com:

var start = ss.getRange(63,4).getDisplayValue();

e remova essa parte:

start = new Date(0);

pois isso substituirá o valor atual atribuído, startque é a data desejada que você deseja obter.


Fragmento de código:

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4).getDisplayValue(); // cell D63
  ss.getRange('C2').setValue(start);  
}