自动固定日期戳记

前端开发 2026-07-09

我在这个工单处理流程中尝试添加一个自动的静态时间戳:

  • 工作表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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章