我创建了一个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
,但这不应该是一个问题,不应该......?
答案 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获取日期和时间信息,就像其他应用程序一样!)
要将工作表的时区设置为正确的时区,您需要转到主菜单,单击“文件”,然后单击“电子表格设置...”,并根据需要进行调整。
脚本和验证现在都可以正常工作
谢谢大家的帮助。