我在 google apps 脚本中有一个代码,当满足某些条件时打印时间戳。
function onEdit(e){
if (e.range.columnStart == 16 && e.range.rowStart >= 12) {
if (e.value == 'Update' || e.value == 'Transmit') {
e.range.offset(0, 1).setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss");
} else {
e.range.offset(0, 1).setValue('');
}
} else if (e.range.columnStart == 14 && e.range.rowStart >= 20) {
if (e.value == 'Transmit') {
e.range.offset(0, 1).setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss");
} else {
e.range.offset(0, 1).setValue('');
}
}
}
对于您的信息,当我使用谷歌工作表时,它是基于新加坡时区,但我认为来自不同时区的其他人会与我不同。
我想要实现的目标是为这些 Google 表格的所有用户(来自不同国家和不同时区)修复时区(基于新加坡时区),而不管他们的 Google 表格中的时区设置如何。我试图将其包含在setNumberFormat
中,但似乎没有此功能的参数。我不确定是否可以实现新加坡时区,如果没有,那么至少基于纽约时区?

说明:
您应该使用Utilities.formatDate(date, timeZone, format)方法并指定Singapore
的时区。
这里是所有timezone IDs的列表,您可以用于您的目的,您的情况下的 ID 将是Asia/Singapore
。
因此,这将为您提供新加坡的 corrent 格式和日期时间:
Utilities.formatDate(new Date(), 'Asia/Singapore', 'yyyy-MM-dd HH:mm:ss');
或鉴于新加坡的时区是T+8
,您可以直接使用它:
const dt = Utilities.formatDate(new Date(), 'T+8', 'yyyy-MM-dd HH:mm:ss');
解决方案:
function onEdit(e){
const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'yyyy-MM-dd HH:mm:ss');
if (e.range.columnStart == 16 && e.range.rowStart >= 12) {
if (e.value == 'Update' || e.value == 'Transmit') {
e.range.offset(0, 1).setValue(dt);
} else {
e.range.offset(0, 1).setValue('');
}
} else if (e.range.columnStart == 14 && e.range.rowStart >= 20) {
if (e.value == 'Transmit') {
e.range.offset(0, 1).setValue(dt);
} else {
e.range.offset(0, 1).setValue('');
}
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(33条)