Как изменить формат строки с 00/00/0000 на 00.00.0000 - PullRequest
0 голосов
/ 26 января 2020

В настоящее время я пишу пользовательскую функцию в Google App Scripts. Прямо сейчас я борюсь. Я определил аргумент для получения ввода из ячейки даты и изменения формата.

например, с 16.09.2010 по 16.09.2010, где заданный столбец имеет первую дату, а функция выводит последнюю.

Вывод - строка, но я не могу найти любую информацию по этой c функции редактирования текста javascript.

Стоит также отметить, что дата в данном столбце основана на выводе формы, я не называю указанную короткую дату в коде, поэтому скорее это больше манипулирование строками, чем форматирование даты

Любая помощь приветствуется.

/**
*Generates a Trip Key
*
*@param DateColumn Date 
*@param SchoolColumn School name
*@param LocationColumn Location
*@customfunction
*/
function GENERATEKEY(DateColumn) {

  var Date = DateColumn       

  const dateStr = Date;
  const dateArr = dateStr.split('/');
  dateArr[0] = ('0' + dateArr[0]).slice(-2);
  dateArr[1] = ('0' + dateArr[1]).slice(-2);

  const DateEdited = dateArr.join('.');

  return neWDateStr; //gives 00.00.0000

  //var Key = Date SchoolColumn "@" LocationColumn




}

Ответы [ 4 ]

2 голосов
/ 26 января 2020

Вы можете просто использовать встроенную TEXT функцию:

=TEXT(A2,"mm.dd.yyyy")

Причина, по которой ваш текущий скрипт (как указано в одном из предыдущих ответов) не работает, заключается в том, что аргумент DateColumn не относится к типу String. Вы можете преобразовать объект даты в указанную c строку и отформатировать ее соответствующим образом или использовать встроенную Utilities библиотеку.

function DOWHATTEXTDOES(dateColumn) {
  return Utilities.formatDate(dateColumn, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "yyyy.MM.dd")
}

Необходимое чтение:

2 голосов
/ 26 января 2020

Date - это встроенный объект. Его не следует использовать в качестве имени переменной.

Хотя const разрешено в скрипте Google Apps, оно не поддерживается полностью (оно не работает в соответствии с состояниями ECMAScript). ИМХО, лучше использовать var, чтобы избежать "путаницы".

В Google Sheets, основываясь на настройках электронной таблицы, измените значения, введенные в поддерживаемом формате даты и времени, на серийные номера и используйте числовой формат для его отображения. как дата, время, дата-время или продолжительность. Когда серийный номер, отображаемый в виде даты, даты, времени или продолжительности, передается пользовательской функции, Google Apps Script преобразует его в объект Date.

Для возврата в формате даты используйте Utilities.formatDate (.. .) Подробности в https://developers.google.com/apps-script/reference/utilities/utilities#formatdatedate, - часовой пояс, -формат

Связано

0 голосов
/ 26 января 2020

Получить и установить числовой формат для активного диапазона

Sheet.getRange().setNumberFormat("mm.dd.yyyy");

Вот диалог и функция, которые я иногда использую для игры с различными форматами. Я нахожу это намного проще и быстрее, чем при использовании функций электронной таблицы.

Функция top - это диалоговое окно, которое читает и отображает текущий формат для активного диапазона и имеет текстовое поле и кнопку для каждой ячейки в активный диапазон, позволяющий установить формат чисел и сразу увидеть изменение.

function getandSetActiveRangeFormats() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getActiveRange();
  var fA=rg.getNumberFormats();
  var html='<style>th,td{border:1px solid black;}</style><table><tr><th>Item</th><th>A1 Notation</th><th>Number Format</th><th>Enter Format</th><th>Set Format</th></tr>';
  var item=1;
  var row=rg.getRow();
  var col=rg.getColumn();
  fA.forEach(function(r,i){
    r.forEach(function(c,j){
      var txt=Utilities.formatString('<input type="text" id="RC-%s-%s" />',row+i,col+j);
      var btn=Utilities.formatString('<input type="button" value="Set Form" onClick="setFormat(%s,%s);" />',row+i,col+j);
      html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',item++,sh.getRange(row + i,col + j).getA1Notation(),fA[i][j],txt,btn);
    });
  });
  html+='</table><input type="button" value="Exit" onClick="google.script.host.close();" />';
  html+='<script>function setFormat(row,col){var f=document.getElementById("RC-"+row+"-"+col).value;google.script.run.setFormat(row,col,f);}</script>';
  var ui=HtmlService.createHtmlOutput(Utilities.formatString(html));
  SpreadsheetApp.getUi().showModelessDialog(ui, "Display Cell Formats")
}

function setFormat(row,col,format) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.getRange(row,col).setNumberFormat(format);
}

Анимация:

enter image description here

0 голосов
/ 26 января 2020

Вы можете сделать что-то вроде этого

  "02/05/2009".split('/').join('.');
...