【问题标题】:Getting a date object to show as plain text获取日期对象以显示为纯文本
【发布时间】:2021-01-08 21:44:45
【问题描述】:

我目前有工作代码,可以获取今天的日期并将其粘贴到该学生缺席的单元格中。如果该学生另一天缺席,该代码会在同一单元格中附加另一个日期。第一次约会一切顺利。它显示为:

09/21

但是当我第二天再次运行它时,它显示:

2020 年 9 月 21 日星期一 01:00:00 GMT-0400(东部夏令时间); 09/22

应该说:

09/21; 09/22

这里是相关的代码部分:

var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var emailCol = getColNum("Student Email")
var absentCol = getColNum("Absences");
var tardyCol = getColNum("Tardies");
var timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
var date = Utilities.formatDate(new Date(), timezone, "MM/dd")

if (saveAb == "Yes") {

  for (i = 0; i < 40; i++) {

    var stuEmail = tAtt.getRange(2 + i, 30).getValue();
    var stuRow = getRowNum(stuEmail, emailCol);
    var stuAbData = sheet.getRange(stuRow, absentCol).getValue();
    Logger.log(stuAbData);
    var abToDisplay = date



    if (stuAbData == "") {
      var stringToDisplay = abToDisplay
    } else {
      var stringToDisplay = stuAbData + "; " + abToDisplay;
    }

    sheet.getRange(stuRow, absentCol).setValue(stringToDisplay);

  }
}

if (saveAb == "Yes" || saveTa == "Yes") {
  ss.toast("Attendance Saved");
}


}

我有什么办法可以将 stuAbData 变量作为纯文本吐出或阻止重新格式化?我已经尝试了几件事,例如在 .setValue 字段中使用此变量。没用。

var newTest = Utilities.formatDate(stuAbData, timezone, "MM/dd");

【问题讨论】:

    标签: javascript datetime google-apps-script


    【解决方案1】:

    请改用getDisplayValue()。

    var stuAbData = sheet.getRange(stuRow, absentCol).getDisplayValue();
    

    getValue() 的问题在于 Google 会将其解释为 Date object 并将其返回给您。只有当您的值为“09/21”时,这才应该在第二次运行时出现问题,因为这将被解释为日期。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多