我正在尝试编写一个程序,该程序仅适用于日期与当前日期匹配的行。我知道如何以 MM/dd/yyyy 格式设置当前日期的格式,但在循环遍历列表并将日期格式设置为我将用于比较的列表时遇到问题。任何建议都有帮助,谢谢!
function date() {
var curDate = Utilities.formatDate(new Date(), "GMT+1", "M/dd/yyyy")
console.log(curDate)
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); // get the sheet
var columnF = sheet.getRange(2, 5, sheet.getLastRow() - 1, 1); // get all the rows
var fValues = columnF.getValues(); // get the values
console.log('fvalues are; ', fValues)
var format = []
var datecolumn = sheet.getRange(2, 5, sheet.getLastRow() - 1, 1)
for (var i = 2; i < 4; i++) {
var datecolumn = sheet.getRange(i, 5).getValue();
format.push(datecolumn)
};
console.log('date array is: ', format)
var format2 = []
for (var i = 0; i < fValues.length; i++) {
var fmtcell = Utilities.formatDate(fValues, "GMT-5", "MM/dd/yyyy")
format2.push(fmtcell)
}
}
最佳答案
如果我理解正确的话,您想要将位于 Sheet1
的 E
列中的一组日期与当前日期进行比较,并将这些日期的格式设置为一定的格式。
如果是这种情况,您可以执行以下操作(检查内嵌注释):
function dateCompare() {
var curDate = Utilities.formatDate(new Date(), "GMT+1", "MM/dd/yyyy");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
// Retrieve list of dates in column E (formatted as current date):
var firstRow = 2;
var column = 5;
var numRows = sheet.getLastRow() - firstRow + 1;
var dates = sheet.getRange(firstRow, column, numRows).getValues().map(function(date) {
return Utilities.formatDate(new Date(date[0]), "GMT+1", "MM/dd/yyyy");
});
dates.forEach(function(date, i) { // Iterate through each date in column E
if (date === curDate) { // Compare each date in column E to current date
// Do something to the row:
var row = sheet.getRange(firstRow + i, 1, 1, sheet.getLastColumn());
}
});
}
请考虑getValues()返回一个二维数组。您可以将此二维数组转换为一维数组,并同时使用map格式化数组中的日期。 .
引用:
关于javascript - 从列中获取日期列表并将其格式化为 MM/dd/yyyy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60283060/