Как отформатировать дату в этом скрипте Google Apps

10

Я наткнулся на этот скрипт проверки ранга. Я не уверен точно, где я его нашел, но он построен на Google Docs и скрипте, который автоматизирует процесс проверки рейтинга. Я немного разбираюсь в кодировании, но этого недостаточно, чтобы понять это. Я уверен, что кто-то здесь может понять это.

Сценарий выполняется ночью, запрашивает у Google мои ключевые слова, а затем заполняет пустые ячейки в электронной таблице Google. Формат даты, который появляется15.06.2014 06:08:21

Я бы хотел, чтобы это был формат даты, с которым я больше знаком, например mm/dd/yyyyили что-то в этом роде.

Во всяком случае, я баловался со скриптом ( на каком языке это написано в? Питон?) , И я вижу , что устанавливает переменную с именем curDatв new Date(). Насколько я понимаю, Date()вызывается функция, и ей не передаются никакие параметры - правильно? Проблема в Date()функции или это просто простой случай, когда мне нужно отформатировать дату в таблицах Google?

Вот паста всего сценария - она ​​короткая:

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
источник
«(на каком языке это написано в« python? »)« Это JavaScript, см. developers.google.com/apps-script
Видар С. Рамдал

Ответы:

9

Используйте setNumberFormatдля установки формата даты (или числа) для конкретной ячейки. В этом примере текущая дата помещается в A1 текущего листа в формате MM / dd / yyyy:

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

Причины использования setNumberFormat(а не так Utilities.formatDate, как если бы часто советовали в интернете):

  1. Utilities.formatDateне меняет формат ячейки; он преобразует свой контент в текст. Если вы собираетесь использовать значение даты в вычислениях, вы не хотите, чтобы оно преобразовывалось в текст.
  2. Utilities.formatDateТребуется указать часовой пояс. Если вы введете что-то вроде «GMT + 1» и ваша страна будет использовать переход на летнее время, вы можете ожидать, что трудно обнаруживаемые ошибки появятся через несколько месяцев. При setNumberFormatэтом значение даты остается совместимым со всеми другими значениями даты в электронной таблице в соответствии с настройкой часового пояса.

источник
Примечание к 2 .: вы можете использовать в Session.getScriptTimeZone()качестве параметра часового пояса.
Кос
Проблема в том, что Session.getScriptTimeZone()выводится длинный формат (например, Америка / Денвер), а не «GMT-7», поэтому вам нужно как-то его преобразовать.
Craig.Pearce
@ Craig.Pearce Верно, и то, конвертирует ли «Америка / Денвер» в GMT-7 или GMT-6, зависит от того, действует ли переход на летнее время, который зависит от того, в каком штате вы находитесь, и какие законы были приняты в этом штате. недавно.
0

Со временем:

  var formatedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss")
Давид Полаковски
источник