Как добавить часовой пояс CST в метку времени в приведенном ниже коде листов Google? Кроме того, это будет знать Летнее время? - PullRequest
1 голос
/ 23 октября 2019

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

function onEdit(e) {
  var sh = e.source.getActiveSheet();
  var sheets = ['TK Assignments']; // Which sheets to run the code.

  // Columns with the data to be tracked. 1 = A, 2 = B...
  var ind = [15, 17, 19].indexOf(e.range.columnStart); 

  // Which columns to have the timestamp, related to the data cells.
  // Data in 1 (A) will have the timestamp in 4 (D)
  var stampCols = [16, 18, 20]

  if(sheets.indexOf(sh.getName()) == -1 || ind == -1) return;

  // Insert/Update the timestamp.
  var timestampCell = sh.getRange(e.range.rowStart, stampCols[ind]);
  timestampCell.setValue(typeof e.value == 'object' ? null : new Date());

1 Ответ

2 голосов
/ 24 октября 2019

Файл Apps Script и файл электронной таблицы имеют свои собственные настройки часового пояса. Настройки часового пояса по умолчанию в скрипте и файлах листов - это часовой пояс в вашем браузере. Когда в коде создается дата, она создается по умолчанию с часовым поясом сценария, а не с часовым поясом Sheets.

Вы можете:

1. Изменить часовой пояс скрипта

  • В редакторе скриптов перейдите на File>Project Properties. На вкладке Info прокрутите вниз около дна и выберите настройку «Часовой пояс» по своему желанию. Поскольку это «часовые пояса» (а не смещения), они будут учитывать DST. Если вы хотите, вы можете прочитать больше об этом здесь .

2. Используйте настройки электронной таблицы. Часовой пояс

  • В электронной таблице также есть настройка часового пояса в Files>Spreadsheet Settings.
  • в сценарии. Вы можете использовать Utilities.formatDate( new Date(), Session.getScriptTimeZone() , "MM/dd/yy HH:mm"). Функция getScriptTimeZone() возвращает настройки часового пояса, найденные в Files/Project properties.
  • Если по какой-то причине вы предпочитаете использовать часовой пояс, отличный от того, который установлен в настройках скрипта или настройках листа, вы можетеустановите тот, который вы предпочитаете при звонке Utilities.formatDate(). Вы можете увидеть больше информации здесь: https://developers.google.com/apps-script/reference/utilities/utilities#formatdatedate,-timezone,-format
...