Как узнать время клиента в надстройке Gmail? - PullRequest
0 голосов
/ 29 июня 2018

Хотелось бы узнать часовой пояс пользователя, который запускает надстройку gmail.

Использование следующего кода не соответствует часовому поясу клиента:

var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
Logger.log(formattedDate);

Я хочу фильтровать свой ответ и просто показывать пользователю предстоящие события.

1 Ответ

0 голосов
/ 30 июня 2018

Существует официальный документированный способ получения информации о часовом поясе в дополнениях Gmail. Добавьте следующую область в файл манифеста:

 "oauthScopes":["https://www.googleapis.com/auth/script.locale", ....]

Установите для свойства 'gmail.userLocaleFromApp' значение 'true':

 "gmail": {"useLocaleFromApp": true}

Установите свойство "onTriggerFunction" для любой функции, которую вы используете для запуска надстройки. Приведенный ниже код отображает карту с информацией о часовом поясе для пользователя, запускающего надстройку.

function loadAddon(e){

var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);

var userLocale = e.userLocale;
var offset = e.userTimezone.offSet;
var timezoneId = e.userTimezone.id;

var message ="User locale: " + userLocale + 
             "\nUTC offset: " + offset +  
             " \nTimezone Id: " + timezoneId;

var card = CardService.newCardBuilder()
                       .setHeader(CardService.newCardHeader()
                                      .setTitle("User timezone info"))
                       .addSection(CardService.newCardSection()
                                       .setHeader(Session.getActiveUser().getEmail())
                                       .addWidget(CardService.newTextParagraph()
                                       .setText(message)))
                       .build();

return [card];

}

UPDATE Кажется, в документации есть ошибка, на которую указывают некоторые редакторы:

https://developers.google.com/gmail/add-ons/how-tos/access-user-locale

Предполагается, что смещение UTC будет e.userTimezone.offset, но на самом деле это e.userTimezone.offSet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...