Временная метка изменяется при замене текста в шаблоне документа Google

У меня есть форма Google, в которой клиенты могут вводить сведения о мероприятиях в сфере общественного питания. Затем сценарий приложения создает событие Календаря Google, открывает шаблон документа Google для замены соответствующего текста, преобразует документ в PDF-файл и отправляет мне его копию по электронной почте перед удалением с моего Диска.

В приведенном здесь коде для календарного события используется "var timeString". И Переименовать текст в документе использует "var timeFormat", чтобы не отображать секунды и GSM. Оба они извлекают данные из ячейки «time = newRequest [0] [14]» в электронной таблице. Но по какой-то причине, которую я не могу объяснить, когда вводится время 10:15, 10:45, 11:15, 11:45, 12:15 и 12:45, скрипт изменяет время в шаблоне документа на ** : 10, **: 40. Этого не происходит, если время выражается однозначным числом часов. Я не понимаю, почему это происходит, помогите пожалуйста?

//rename data into useable tags  
  timestamp = newRequest[0][0],
  company = newRequest[0][1],
  contact_name = newRequest[0][2],
  contact_email = newRequest[0][3],
  contact_phone = newRequest[0][4],
  onsite_name = newRequest[0][5],
  onsite_phone = newRequest[0][6],
  pickup_delivery = newRequest[0][7],
  day = newRequest[0][8],
  address = newRequest[0][9],
  location = newRequest[0][10],
  parking = newRequest[0][11],
  guests = newRequest[0][12],
  other = newRequest[0][13],
  time = newRequest[0][14];
  date = newRequest[0][15]

//create new calendar event  
  var dateString = date.toDateString();
  var dateFormat = dateString.substr(4,11);
  var timeString = time.getHours() + ":" + time.getMinutes();
  var timeFormat = time.toLocaleTimeString().substr(0,4) + time.toLocaleTimeString().substr(7,4);
  var endtimeString = (time.getHours() + 1) + ":" + time.getMinutes();
  var calendar = CalendarApp.getCalendarById('haleyhouse.org_1oicreouarl3je785ltupuoppg@group.calendar.google.com');
  var event = calendar.createEvent(contact_name + ", " + company + ", " + contact_phone, 
      new Date(dateString + " " + timeString), 
      new Date(dateString + " " + endtimeString), 
      {description: timestamp + " received form request - google", location: address});

//rename text in the document
  copyBody.replaceText('keyDay', day);
  copyBody.replaceText('keyDate', dateFormat)
  copyBody.replaceText('keyTime', timeFormat)
  copyBody.replaceText('keyCompany', company);
  copyBody.replaceText('keyContact_Name', contact_name);
  copyBody.replaceText('keyContact_Email', contact_email);
  copyBody.replaceText('keyContact_Phone',contact_phone);
  copyBody.replaceText('keyOnsite_Name', onsite_name);
  copyBody.replaceText('keyOnsite_Phone', onsite_phone);
  copyBody.replaceText('keyDelivery', pickup_delivery);  
  copyBody.replaceText('keyAddress', address);
  copyBody.replaceText('keyLocation', location);
  copyBody.replaceText('keyGuests', guests);

person Jason Palmeira    schedule 28.05.2014    source источник


Ответы (1)


В сценарии приложений Utilities.formatDate () - ваш друг.

Попробуй это:

  var startDate = dateString+' '+time;
  var timeFormat = Utilities.formatDate(new Date(startDate), Session.getScriptTimeZone(), 'hh:mm');
  Logger.log(timeFormat)

Убедитесь, что в свойствах проекта сценария установлен правильный часовой пояс.

person LennyZ71    schedule 29.05.2014
comment
Спасибо! Utilities.formatDate () - мой друг. Это просто сделало работу более гладкой. И это избавило меня от моей странной ошибки **: 15. - person Jason Palmeira; 04.06.2014