如何修复本地时间的 Google Apps 脚本并自动清除单元格
Posted
技术标签:
【中文标题】如何修复本地时间的 Google Apps 脚本并自动清除单元格【英文标题】:How to fix Google Apps Script for local time and automatically clear a cell 【发布时间】:2019-07-02 04:58:01 【问题描述】:我正在创建一个必须由不同人填写的共享议程。每次他们修改某个单元格时,都会在同一行的另一个单元格中报告更改日期(天)。下面的代码目前正在运行,但有 3 个小问题:
-
当地时间不正确(我住在意大利)
我也想看看时间(小时:分钟)
如果修改后的单元格被清除(如文本被删除),更改日期也会消失。
我发现这种类型的代码很难调试,希望能提供任何帮助。 提前谢谢你,
function onEdit(event)
var cell = event.source.getActiveCell();
var sheet = cell.getSheet();
var headers= sheet.getDataRange().getValues()[0];
var statusCol = headers.indexOf('Status') + 1 ;
var ss = event.source.getActiveSheet();
if (event.range.columnStart != 2)
else
ss.getRange(event.range.rowStart, 5)
.setValue(getDate(new Date()));
var tt = event.source.getActiveSheet();
if (event.range.columnStart != 34)
return;
else
tt.getRange(event.range.rowStart, 37)
.setValue(getDate(new Date()));
function getDate(d)
if (d)
return d.getDate() + "/" + (d.getMonth()+1) + "/" + d.getYear();
【问题讨论】:
您是否在此处缺少return;
if (event.range.columnStart != 2) //here else ss.getRange(event.range.rowStart, 5) .setValue(getDate(new Date()));
这个问题太宽泛了,因为每个点都有自己的答案。
【参考方案1】:
添加时区、小时、分钟,如果单元格内容被删除,则删除日期时间。
它以 24 小时格式添加小时和分钟,并进行时区校正,如果 e.value 为空,则删除日期时间单元格的内容。
function onEdit(e)
var ss=e.source;
var rg=e.range;
var sh=rg.getSheet();
if(rg.columnStart!=2 && rg.columnStart!=34)return;
if(rg.columnStart==2)
if(e.value)
sh.getRange(rg.rowStart, 5).setValue(Utilities.formatDate(new Date(new Date().getFullYear(),new Date().getMonth()+1,new Date().getDate(),new Date().getHours(),new Date().getMinutes()),Session.getScriptTimeZone(),"d/MMM/yyyy HH:mm"));
else
sh.getRange(rg.rowStart, 5).setValue('');
if (rg.columnStart==34)
if(e.value)
sh.getRange(rg.rowStart, 37).setValue(Utilities.formatDate(new Date(new Date().getFullYear(),new Date().getMonth()+1,new Date().getDate(),new Date().getHours(),new Date().getMinutes()),Session.getScriptTimeZone(),"d/MMM/yyyy HH:mm"));
else
sh.getRange(rg.rowStart, 37).setValue('');
Spreadsheet Edit Event Object
Utilities.formatDate()
【讨论】:
感谢您的及时回复。不幸的是,时间比我的实际时区早了 6 个小时。此外,一旦删除单元格的内容,包含日期的单元格也不会被删除。我不知道这是否有区别,但第 3 列和第 34 列是下拉列表 是的,很高兴知道它们是下拉菜单,因为我的床单上没有任何下拉菜单。这对我有用,所以你可能需要做一些调试,因为你没有包括所有细节和你的问题 电子表格有一个时区,脚本有一个时区,因此您可能需要调整它们。 我很抱歉缺少详细信息。我不太了解代码。您能否帮助我解决如何修复代码以考虑下拉菜单?非常感谢!! 使用新信息和代码更新您的问题,并创建电子表格的公开版本,以便我们验证操作。看看minimal reproducible example 和How to Ask。或者,如果您希望您可以检查这个关闭并启动另一个。您的来电。以上是关于如何修复本地时间的 Google Apps 脚本并自动清除单元格的主要内容,如果未能解决你的问题,请参考以下文章
通常如何从 Google Apps 脚本访问 BigQuery
如何从 Google Apps 脚本授权 Google Speech-to-text?