Google apps script 日期getValue()与getDisplayValue()相隔一天

Google apps script 日期getValue()与getDisplayValue()相隔一天,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个单元格,其日期格式化并设置为:“2019年11月2日,星期六” 但当我用脚本查找单元格日期时,它是一天的休息(-1) 为什么GoogleSheets允许我使用日历选择器设置日期,而在脚本中计算减去一天的日期 有什么办法解决这个问题吗?这个答案怎么样?请把这看作是几个可能的答案之一 虽然我不确定您的实际情况,例如,电子表格的时区值和脚本的时区值是不同的,但这种情况可能会发生 getValue()检索的值遵循脚本的时区 getDisplayValue()检索的值遵循电子表格的时区 两个时

我有一个单元格,其日期格式化并设置为:“2019年11月2日,星期六”

但当我用脚本查找单元格日期时,它是一天的休息(-1)

为什么GoogleSheets允许我使用日历选择器设置日期,而在脚本中计算减去一天的日期


有什么办法解决这个问题吗?

这个答案怎么样?请把这看作是几个可能的答案之一

虽然我不确定您的实际情况,例如,电子表格的时区值和脚本的时区值是不同的,但这种情况可能会发生

  • getValue()
    检索的值遵循脚本的时区
  • getDisplayValue()
    检索的值遵循电子表格的时区
两个时区都可以通过以下脚本确认

var timezone1 = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
var timezone2 = Session.getScriptTimeZone();
Logger.log(timezone1)
Logger.log(timezone2)
  • 如果
    时区1
    时区2
    不同,则认为问题的原因是时区不同。在这种情况下,请设置电子表格或脚本的时区
  • 如果
    timezone1
    timezone2
    相同,则认为问题的原因不是时区造成的。因此,需要进行更多的调查,以澄清问题的原因
参考资料:

如果我误解了你的情况,我道歉。

你的建议起了作用。事实证明,我的电子表格有一个相似但不同的时区(时区1=美国/芝加哥,时区2=美国/墨西哥城)。“谷歌脚本编辑器”首选项有自己不同的时区设置。@Adam Glazier感谢您的回复。我知道我的猜测对你的情况是正确的。如果您希望电子表格和脚本之间的结果相同,请使用相同的时区。但是如果我的回答不能解决你的问题,我必须道歉。
var timezone1 = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
var timezone2 = Session.getScriptTimeZone();
Logger.log(timezone1)
Logger.log(timezone2)