【问题标题】:Having issues with pulling a date from the spreadsheet从电子表格中提取日期时遇到问题
【发布时间】:2018-07-29 17:11:11
【问题描述】:

我正在使用 Google 脚本,这是我的问题。

我正在尝试将今天的日期与电子表格 C 列中输入的日期进行比较。我拥有的代码似乎应该可以工作,但是当我使用记录器查看它给我的日期时,它给了我“Wed Dec 31 19:00:00 GMT-05:00 1969”而不是 2018-07-29 1:00 PM。

我知道我需要使用 Utilities.formatDate 来比较它们,但我似乎不明白为什么它没有在 C 列中提取日期。

下面是我的代码:

function sendEmail() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var startRow = 3;  // First row of data to process
 var numRows = sheet.getLastRow()-1;   // Number of rows to process
 // Fetch the range of cells A2:B3
 var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
 // Fetch values for each row in the Range.
 var data = dataRange.getValues();
 //Logger.log(data); // give you the data you are looking at comparing


for (var i in data) {
 var row = data[i];
 var date = new Date();
 //Logger.log(date); // sets to todays date and time.
 var sheetDate = new Date(row[3]);
 Logger.log(sheetDate); // date in the row you are comparing

【问题讨论】:

  • 请给两个 Logger 项目,并标记它们 //Logger.log(data);和 Logger.log(sheetDate);也做 Logger.log(i) 看看它的价值
  • 您获得此值是因为 row[3] 为空或无效日期。单元格是否包含日期?双击它会显示日历吗?顺便说一句,关于必须使用 Utilities.formatDate 来比较日期的断言是不正确的,还有很多其他方法可以去......
  • 谢谢大家的好建议。我知道我哪里错了。迭戈是正确的,我不得不使用行[2]。我还为 i 添加了一个记录器,我得到了我需要的东西。非常感谢。

标签: date google-apps-script google-sheets


【解决方案1】:

您没有查看 C 列中的值。getValues() 方法返回一个二维数组,arrays are 0-indexed。这意味着您在定义 sheetDate 时应该使用 2(而不是 3)。

var sheetDate = new Date(row[2]);

正如 cmets 中所述,您不需要使用 Utilities.formatDate(),但这是一个单独的问题。我还会尝试在将其转换为日期之前记录该值(例如Logger.log(row[2]))。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多