获取当前用户时区

Gre*_*reg 3 google-apps-script

我一直在Session.getTimeZone()用来获取当前用户的时区.我刚刚注意到它已被弃用,我看不到任何复制此功能的内容.我的用户遍布美国各地,日期/时间应相应格式化.如何获取当前用户的时区而不是脚本/所有者的时区?

有问题的项目是一个独立的脚本.

Len*_*Z71 5

Greg,正常的javascript似乎正在按预期工作,这可能是天然气中的新功能.代码函数的第二个例子是为我返回正确的时区偏移量.我目前在gasOffsetScript中使用Session.getTimeZone().这里的问题对未来可能是一个很好的解读.
使用日历时区设置事件时区,而不是用户

如果脚本以用户身份运行,则下一个代码将根据其默认日历设置获取用户时区.

function getUserTimeZone() {
  var userTimeZone = CalendarApp.getDefaultCalendar().getTimeZone();
  Logger.log(userTimeZone)
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用普通的javascript修改以下内容.

返回用户时区的代码 Stackoverflow问题

function userTimeZone() {
  function pad(number, length){
    var str = "" + number
    while (str.length < length) {
        str = '0'+str
    }
    return str
}

var offset = new Date().getTimezoneOffset()
offset = ((offset<0? '+':'-')+ // Note the reversed sign!
          pad(parseInt(Math.abs(offset/60)), 2)+
          pad(Math.abs(offset%60), 2))
  Logger.log(offset)
}
Run Code Online (Sandbox Code Playgroud)

祝你好运兄弟,时区是荆棘.


Zig*_*del 3

使用电子表格的时区:getSpreadsheetTimeZone()

如果您使用独立脚本,您唯一的希望是在用户的驱动器上创建一个临时电子表格(您需要将其发布以作为用户运行),然后查看电子表格的默认时区。

更多信息:Google 开发人员 - 电子表格