我写了以下代码
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var tabProgram = "Test";
var TabUpcomingTransposed = "Data"
var UpcomingTransposedss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TabUpcomingTransposed);
var activeCell = ss.getActiveCell();
//Get array of data to filter if Date dropdown is changed
if(activeCell.getColumn() == 4 && activeCell.getRow() == 2 && ss.getSheetName() === tabProgram){
//get Data in an array form sheet
var ArrayofPrograms = UpcomingTransposedss.getRange(2, 1,UpcomingTransposedss.getLastRow() , UpcomingTransposedss.getLastColumn()) .getValues();
//Logger.log(ArrayofPrograms);
//Get Date from dropdown
var Program_date = Utilities.formatDate(activeCell.getValue(), "GMT+1", "dd-MMM-yyyy");
Logger.log(Program_date);
//filter on array by selected date
var ProgramsFiltered = ArrayofPrograms.filter(function(item){
/return true;
//return false;
var filter_date = Utilities.formatDate(item[0], "GMT+1", "dd-MMM-yyyy");
if (filter_date.valueOf() == Program_date.valueOf()) {
Browser.msgBox('Test', 'True', Browser.Buttons.OK);
return true;
} else {
Browser.msgBox('Test', 'False', Browser.Buttons.OK);
return false;
}
});
Browser.msgBox('Test', 'Filter Done', Browser.Buttons.OK);
Logger.log(ProgramsFiltered);
} else {
//Nothing
}
}
如果我运行该代码,则会收到一条弹出消息,提示“过滤器已完成”,并且在查看日志时会得到一个数组,其中包含所有初始数组中的项。
如果我注释掉return true;
,则会收到一条弹出消息,表示“过滤器已完成”,当我查看日志时,会得到一个Emperty数组“ []”
如果我注释掉return true;
和return false;
行,则会得到15条弹出消息,它们对应于原始测试数组中的15个项目。有些人会说是对,有些人会说错。 “过滤器完成”弹出窗口将不会出现,当我进入视图日志时,它为空。
为什么这行不通?