如何在 gmail 附加组件中获取客户的时间?

How to get the client's time in a gmail add-on?

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

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

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

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

有官方记录的方法可以在 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。