Google apps script 有什么想法吗;这就是为什么谷歌应用程序脚本过滤器无法正确过滤的原因
我已经编写了以下代码Google apps script 有什么想法吗;这就是为什么谷歌应用程序脚本过滤器无法正确过滤的原因,google-apps-script,filter,Google Apps Script,Filter,我已经编写了以下代码 如果我运行该代码,我会收到一条弹出消息,如预期的那样显示“Filter Done”,当我查看日志时,我会得到一个包含初始数组中所有项的数组 如果我注释掉返回true我收到一条弹出消息,上面写着“过滤完成”,当我查看日志时,我得到一个emprty数组“[]” 如果我注释掉返回true和返回false行,我得到15条弹出消息,对应于原始测试数组中的15项。有人会说真,有人会说假。“过滤完成”弹出窗口不会出现,当我转到查看日志时,它是空的 你知道为什么这行不通吗 欢迎使用St
如果我运行该代码,我会收到一条弹出消息,如预期的那样显示“Filter Done”,当我查看日志时,我会得到一个包含初始数组中所有项的数组 如果我注释掉
返回true代码>我收到一条弹出消息,上面写着“过滤完成”,当我查看日志时,我得到一个emprty数组“[]”
如果我注释掉返回true
和返回false代码>行,我得到15条弹出消息,对应于原始测试数组中的15项。有人会说真,有人会说假。“过滤完成”弹出窗口不会出现,当我转到查看日志时,它是空的
你知道为什么这行不通吗 欢迎使用StackOverFlow。请借此机会学习并学习如何使用和。您的示例代码不完整。请共享您的示例数据。我已经尝试了你的代码,但我无法重新创建这个问题。我把这个谷歌表格放在一起,里面的代码不起作用。这里是链接。谢谢你的帮助。FWIW,var ArrayofPrograms
是“A2:D11”,因为您从第2行开始,但使用upComingTransposeS.getLastRow()
作为行数。行数应为upComingTransposeSDss.getLastRow()-1
。
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
}
}