为什么Google表格中的日期验证会拒绝今天上午8:00之前的日期?

时间:2015-05-19 07:36:29

标签: validation date google-apps-script google-sheets

我创建了一个Google工作表,用一列保存工作任务列表,以跟踪创建项目的日期,并构建一个脚本,以自动填充该列中的单元格。插入新行的日期。

作为脚本目标的单元格(例如G9​​)使用以下验证公式来确保当用户更改日期时,他们使用既不是周末也不是将来的日期:

=and(isdate(G9), weekday(G9,2)<6, G9<=today())

它只能工作,但是如果脚本在早上8点之后开始运行!如果我以前尝试使用它,则单元格验证将拒绝输入!

脚本如下所示(curRow是已添加的行号):

 // Adds today's date without using =today()
  var myrangename = "G"+curRow;
  var dateCell = sheet.getRange(myrangename);
  var d = new Date();
  var dateArr = [];
  dateArr[0]=d.getFullYear();
  dateArr[1]=d.getMonth() + 1; //Months are zero based
  dateArr[2]=d.getDate();
  dateCell.setValue(dateArr.join('/'));

(n.b。:我不能使用脚本简单地将=today()放在单元格中,因为所有条目每天都会更改。)

为什么它只能在上午8:00之后工作?谷歌在某种程度上运行在与我的计算机不同的时区吗?我来自英国,所以使用BST,但这不应该是一个问题,不应该......?

2 个答案:

答案 0 :(得分:0)

尝试

var d = new Date();
var d = Utilities.formatDate(d, "GMT+1", "yyyy-MM-dd HH:mm:ss");

我不确定谷歌是否会将BST识别为时区,但您也可以尝试

var d = Utilities.formatDate(d, "BST", "yyyy-MM-dd HH:mm:ss");

答案 1 :(得分:0)

感谢您的建议,Aprillion。事实证明 Google表格文件有自己的内部时区设置! 在我的案例中被设定为美国太平洋时间(因此落后8小时)
(你会认为它会自动从Windows获取日期和时间信息,就像其他应用程序一样!)
要将工作表的时区设置为正确的时区,您需要转到主菜单,单击“文件”,然后单击“电子表格设置...”,并根据需要进行调整。 脚本和验证现在都可以正常工作 谢谢大家的帮助。