自动固定日期戳记
我在这个工单处理流程中尝试添加一个自动的静态时间戳:
- 工作表A 的列B 标注为“Data Received”。用户在收到工单时手动输入日期。
- 当执行
ClosedRow15()函数时,它会把数据复制到工作表B。缺少的部分是它还应该用当前日期和时间的静态时间戳覆盖列B 的日期。 - 例如,我今天已经关闭工单:
ClosedRow15()函数应该把数据复制到工作表B,但列B 的日期应被今天的日期和当前时间覆盖。
问题:
如何在 ClosedRow15 函数中,在工作表B 的列B 添加时间戳?
为了直观展示,以下是我想实现的一个示例:示例表。
解决方案
使用 new Date() 获取时间戳。如果你只想要日期部分,众多方法之一是使用 Utilities.formatDate(new Date(), timeZone, "yyyy/MM/dd")。这将返回一个JavaScript字符串,但写入到电子表格时,Google Sheets会自动将其转换为一个Google Sheets日期值。
你可以把时区写死,或者从电子表格中获取。
如何获取电子表格时区的示例
const spreadsheet = Spreadsheet.getActiveSpreadsheet();
const timeZone = spreadsheet.getSpreadsheetTimeZone();
然后把新日期放到列B。实现这一点的一种做法是使用数组索引:
sourceValues[0][1] = Utilities.formatDate(new Date(), timeZone, "yyyy/MM/dd");
备选方案
把 if() 代码替换成这样:
if (!hasDuplicate) {
const sourceValues = dataToCopy.getValues().flat();
const oldDate = sourceValues.splice(1, 1, new Date());
ConsolidatedSheet.appendRow(sourceValues);
source.getRange(15, 1, 1, 27).setBackground('#b7b7b7');
sheet.toast('Data has been logged and should reflect in the Consolidated tracker within 15 minutes. If the case splits, please log a new one in the tracker. If Forecasting to Booking split, please log the new Case ID in the tracker.');
}
else { //...
将时间戳列格式化为 Format > Number > Date time。
参阅 Array.splice()、Sheet.appendRow() 和 Array.flat() 的相关文档。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。