#javascript #datetime #google-apps-script
#javascript #datetime #google-apps-script
Вопрос:
В настоящее время у меня есть рабочий код, который принимает сегодняшнюю дату и вставляет ее в ячейку, если этот ученик отсутствует. Затем код добавляет другую дату в ту же ячейку, если этот учащийся отсутствует в другой день. Для первого свидания все работает хорошо. Он отображается как:
09/21
Но когда я запускаю его снова на следующий день, он показывает:
Пн, 21 сентября 2020 г. 01:00:00 GMT-04:00 (восточное дневное время); 22.09.2017
Он должен сказать:
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 в виде обычного текста или предотвратить переформатирование if? Я пробовал несколько вещей, таких как использование этой переменной вместо этого в поле .setValue . Не работает.
var newTest = Utilities.formatDate(stuAbData, часовой пояс, «ММ / дд»);
Ответ №1:
Используйте getDisplayValue()
вместо этого.
var stuAbData = sheet.getRange(stuRow, absentCol).getDisplayValue();
Проблема в getValue()
том, что Google интерпретирует его и вернет вам как объект Date. Это должно быть проблемой только при втором запуске, когда у вас есть значение «09/21», поскольку это будет интерпретироваться как дата.