google-apps-script - 如何在 gmail 插件中获取客户的时间?
问题描述
我想知道运行 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。
推荐阅读
- python - 不等于函数在 PySpark 内部连接中不起作用
- branch - 如果遵循基于主干的开发,您会创建拉取请求吗?| 樱桃挑选与拉取请求 | 分支策略
- arrays - sizeof 不返回输入的实际长度
- jenkins - Jenkins - 用于创建分支内容的 ZIP 包的声明性管道
- python - 类中的 Python Glob 以访问文件中的元素
- python - 将低分辨率黑白图片转换为矩阵的最简单方法
- nlp - XLNet 标记化和词嵌入
- python - 从 skimage 导入数据
- python - 将 SQL 查询转换为 PySpark 数据帧,以应对连接数据帧的情况
- android - RelativeSizeSpan 的 SpanStyle 等价物是什么?