首页 > 解决方案 > 在导入到 Apps 脚本之前将 Google 表格日期转换为其数字格式

问题描述

我需要一个脚本,如果它们的时间戳超过了非活动日期,即从今天的日期过去 31 天,它将从 Google 工作表中删除行。我找到了一个可以做到这一点的脚本,并对其进行了一些修改以满足我的需要。它没有用。我花了 30 分钟试图找出什么不起作用,最后通过日志意识到,当 Apps 脚本从工作表中提取日期时,它会提取以下内容:

2020 年 8 月 24 日星期一 06:33:33 GMT+01:00

而不是 Google 表格的日期数字格式。我需要一种方法将该日期转换为数字格式。这是我正在处理的脚本:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW - Roll Call');
  var values = sheet.getDataRange().getValues();
  var today = Date.now()/86400000 + 25569;
  var inactivityDate = today-31;
  for (var i = values.length - 1; i >= 0;  i--) {
    if (values[i][0] < inactivityDate) {
      sheet.deleteRow(i+1);
    }
  }
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


如果 Google 表格中的 Date 列是 Date 类型,则 getValues() 方法会将列值作为日期对象返回。

function deleteRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RAW - Roll Call');
  var values = sheet.getDataRange().getValues();
  var today = new Date();
  var today = Date.now()/86400000 + 25569;
  var inactivityDate = today-31;
  for (var i = values.length - 1; i >= 0;  i--) {
    var diffInDays = (today - values[i][0])/(1000*60*60*24);
    if (diffInDays < 31) {
      sheet.deleteRow(i+1);
    }
  }
}

推荐阅读