Como formatar a data neste script do Google Apps

9

Eu me deparei com esse script de verificação de classificação. Não sei exatamente onde o encontrei, mas ele é construído no Google Docs e em um script que automatiza o processo de verificação de classificação. Eu entendo um pouco de codificação, mas não o suficiente para realmente descobrir isso. Estou certo de que alguém aqui pode descobrir isso.

O script é executado todas as noites, consulta minhas palavras-chave no Google e preenche células em branco em uma planilha do Google. O formato da data que aparece é15.06.2014 06:08:21

Eu gostaria que fosse um formato de data que eu esteja mais familiarizado, como mm/dd/yyyyalgo assim.

De qualquer forma, eu tenho dividido com o script (que língua é esta escrito? Python?) E eu vejo isso define uma variável chamada curDatpara new Date(). Pelo que entendi, Date()uma função está sendo chamada e nenhum parâmetro está sendo passado para ela - correto? O problema está na Date()função ou é apenas um caso simples de eu precisar formatar a data nas planilhas do Google?

Aqui está uma pasta de todo o script - é curto:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.insertColumnBefore(5);
  var column = sheet.getRange('B13:B');
  var values = column.getValues();
  var rankingdrop = sheet.getRange("c8").getValue();
  var ct = 0;
  var colors = [];
  while ( values[ct][0] != "" ) {
  var formu = sheet.getRange("d" + (ct+13)).getFormula();
    sheet.getRange("d" + (ct+13)).setFormula(formu);
    Utilities.sleep(3000);
  var rank = sheet.getRange("d" + (ct+13)).getValue();
  sheet.getRange("e" + (ct+13)).setValue(rank);
  var oldrank = sheet.getRange("f" + (ct+13)).getValue();
  var colorcell = sheet.getRange("e" + (ct+13));
    if(rank > oldrank){
    colorcell.setFontColor("#ff0000");
  } else if (rank < oldrank){
    colorcell.setFontColor("#088A08");
  }
    if (rank - oldrank >= rankingdrop) {
      var mailalert = true;
    }
    ct++;
  }
  var sendmail = sheet.getRange("c7").getValue();
  if (mailalert == true && sendmail == "yes")  {
    var emailAddress = sheet.getRange("c9").getValue();
    var message = "Ranking alert. Please check your rankings";
    var url = sheet.getRange("c4").getValue();
    var subject = ("Ranking Alert for " + url);
    MailApp.sendEmail(emailAddress, subject, message);
  }
  var curDat = new Date();
  var startOTY = curDat.getFullYear();
  var curValue = Date.parse(curDat);
  var begDat = new Date(startOTY,0,1);
  var begValue = Date.parse(begDat);
  var weekNum = parseInt((curValue - begValue)/604800000)+1;
  sheet.getRange("e12").setValue(curDat);
}
user72299
fonte
"(? que língua é esta escrito em python)" É JavaScript, consulte developers.google.com/apps-script
Vidar S. Ramdal

Respostas:

9

Use setNumberFormatpara definir o formato da data (ou número) para uma célula específica. Este exemplo coloca a data de hoje em A1 da planilha atual, formatada como MM / dd / aaaa:

var cell = SpreadsheetApp.getActiveSheet().getRange(1, 1);
cell.setValue(new Date()).setNumberFormat("MM/dd/yyyy");

Razões para usar setNumberFormat(e não Utilities.formatDate, como se frequentemente recomendado na Internet):

  1. Utilities.formatDatenão altera o formato da célula; ele converte seu conteúdo em texto. Se você usar o valor da data nos cálculos, não deseja que ele seja convertido em texto.
  2. Utilities.formatDaterequer um para especificar um fuso horário. Se você colocar algo como "GMT + 1" e seu país observar o horário de verão, poderá esperar que erros difíceis de rastrear apareçam alguns meses depois. Com setNumberFormat, o valor da data permanece consistente com todos os outros valores da data na planilha, regidos por sua configuração de fuso horário.

fonte
Nota para 2 .: você pode usar Session.getScriptTimeZone()como parâmetro de fuso horário.
Kos,
O problema é que Session.getScriptTimeZone()produz o formato longo (por exemplo, América / Denver) em vez de "GMT-7", então você precisa convertê-lo de alguma forma.
Craig.Pearce
@ Craig.Pearce Right, e se "America / Denver" se converte em GMT-7 ou GMT-6 depende se o horário de verão está em vigor, que depende de qual estado você está e de quais leis foram aprovadas nesse estado recentemente.
0

Com tempo:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
Dawid Polakowski
fonte