Сценарий Google Apps: получение даты из электронной таблицы и запись в контакты
Используя скрипт Google Apps, я пытаюсь взять дату, записанную в электронной таблице, и добавить ее в поле даты в контакт. В частности, я не могу преобразовать месяц даты javascript, прочитанной из электронной таблицы, в перечисление месяца, которое может использовать метод contact.addDate.
var months = ContactsApp.Month.values;
var birthdate = new Date( spreadsheet_date );
var month = months[ birthdate.getMonth() ];
contact.addDate(ContactsApp.Field.BIRTHDAY,
month, birthdate.getDate(), birthdate.getFullYear() );
2 ответа
Есть много способов приблизиться, так как я вижу, что переключение является самым простым, хотя нет и одной строки, так как нет имени месяца, встроенного в Javascript:
var month = birthdate.getMonth();
switch(month){
case 0:
month = ContactsApp.Month.JANUARY;
break;
case 1:
month = ContactsApp.Month.FEBRUARY;
break;
[...]
case 11:
month = ContactsApp.Month.DECEMBER
break;
}
Другая модель...
var arr = [
CalendarApp.Month.JANUARY,
CalendarApp.Month.FEBRUARY,
CalendarApp.Month.MARCH,
...
];
var month = arr[birthdate.getMonth()];
Посмотрите, как я делаю это в этом посте другой вопрос, который у меня есть, здесь
Поле Google Birthday"День рождения" не отображается, если установлено из скрипта приложений.
Вам нужно сопоставить перечисление с названием месяца. Это позволит избежать длинного оператора switch. Это решение изначально было предоставлено мне @tehhowch.
var month = months[ birthdate.getMonth() ];
var monthAsInt={JANUARY:1,FEBRUARY:2,MARCH:3,APRIL:4,MAY:5,JUNE:6,JULY:7
,AUGUST:8,SEPTEMBER:9,OCTOBER:10,NOVEMBER:11,DECEMBER:12}[month];
как функция;
function monthToInt(month) {
return {JANUARY:1,FEBRUARY:2,MARCH:3,APRIL:4,MAY:5,JUNE:6,JULY:7
,AUGUST:8,SEPTEMBER:9,OCTOBER:10,NOVEMBER:11,DECEMBER:12}[month];
}