我正在尝试编写一个程序,只应用于日期与当前日期匹配的行。我知道如何在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());
}
});
}
请考虑getVales()返回二维数组。您可以将此2D转换为一维数组,并使用map同时格式化数组中的日期。
function formatDate() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var dt=new Date();
var dtv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valufOf();
var colfR=sh.getRange(2,5,sh.getLastRow()-1,1);
var colfV=colfR.getValues();
var colfF=colfR.getNumberFormats();
for (var i=0;i<colfV.length;i++) {
var dtf=new Date(colfV[i][0]);
var dtfv=new Date(dtf.getFullYear(),dtf.getMonth(),dtf.getDate()).valueOf();
if(dtfv===dtv){colfF[i][0]="MM/dd/yyyy";}
}
colfR.setNumberFormats(colfF)
}