首页 > 解决方案 > 如何在 gmail 插件中获取客户的时间?

问题描述

我想知道运行 gmail 插件的用户的时区。

尝试以下代码不符合客户的时区:

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

我基本上想过滤我的响应,只向用户显示即将发生的事件。

标签: google-apps-scriptgmail-addons

解决方案


有官方记录的方式来检索 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];

}

更新 一些编辑指出的文档中似乎存在错误:

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

UTC 偏移量应该是 e.userTimezone.offset,但实际上是 e.userTimezone.offSet。


推荐阅读