Просто пытаюсь изучить аддоны GSuite .. следуя указаниям разработчика в качестве руководства: https://developers.google.com/gsuite/add-ons/concepts/widgets#user_interaction_widgets Я вижу карту аддона разработчика, которая появляется в Gmail ... но затем выдает ошибку:
TypeError: Невозможно прочитать свойство 'form_input_date_value' из неопределенного [строка: 34, функция: handleDateChange, файл: Код]
Это строка 34:
var dateInputControl = e.commonEventObject.formInputs["form_input_date_value"].dateInput;
Вот полный источник, который я пытаюсь ...
function loadAddOn(event) {
var dateOnlyPicker = CardService.newDatePicker()
.setTitle("Date to send Drafts")
.setFieldName("form_input_date_value")
.setValueInMsSinceEpoch(1558668600000)
.setOnChangeAction(CardService.newAction()
.setFunctionName("handleDateChange"));
var card = CardService.newCardBuilder()
.setHeader(CardService.newCardHeader().setTitle("Date Test"))
.addSection(CardService.newCardSection()
.addWidget(dateOnlyPicker))
.build();
return [card];
}
function handleDateChange(e) {
var dateInputControl = e.commonEventObject.formInputs["form_input_date_value"].dateInput;
// have also tried e.commonEventObject.formInputs.myDatePicker[""].dateInput without luck
var msSinceEpoch = dateInputControl.msSinceEpoch;
var hasDate = dateInputControl.hasDate;
var hasTime = dateInputControl.hadTime;
var userTimezoneId = event.userTimezone.id;
// Format and log the date-time selected using the user's timezone.
var formattedDateTime;
if (hasDate && hasTime) {
formattedDateTime = Utilities.formatDate(
new Date(msSinceEpoch), userTimezoneId, "yyy/MM/dd hh:mm:ss");
} else if (hasDate) {
formattedDateTime = Utilities.formatDate(
new Date(msSinceEpoch), userTimezoneId, "yyy/MM/dd")
+ ", Time unspecified";
} else if (hasTime) {
formattedDateTime = "Date unspecified, "
+ Utilities.formatDate(
new Date(msSinceEpoch), userTimezoneId, "hh:mm a");
}
if (formattedDateTime) {
console.log(formattedDateTime);
}
}
Я посмотрел на этой странице: https://developers.google.com/gsuite/add-ons/concepts/event-objects и это говорит:
Выбор только на дату: объект DateInput
. Пример: для средства выбора с идентификатором myDatePicker
, получить доступ к объекту DateInput
, используя e.commonEventObject.formInputs.myDatePicker[""].dateInput
.
Если я задаю имя файла, используя .setFieldName("myDatePicker")
, а затем использую var dateInputControl = e.commonEventObject.formInputs.myDatePicker[""].dateInput;
I Я все еще получаю ту же ошибку.
Не могу понять, как мне обойти это. Если бы мне пришлось угадывать - я бы сказал, что установка FieldName не устанавливает ID, и поэтому я не могу его найти.