【发布时间】:2021-06-16 17:59:04
【问题描述】:
我正在尝试过滤由 NaN 和一个字符串元素组成的数组“employee_name”,以排除除字符串之外的任何元素。上下文是我有一个包含员工出生日期的电子表格,并且我正在发送电子邮件通知,以防今天两天后有生日。我的变量如下所示:
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Employees');
var range = ss.getRange(2, 1, ss.getLastRow()-1, 1); // column containing the birth dates
var birthdates = range.getValues(); // get the `values` of birth date column
var today = new Date ();
var today = new Date(today.getTime());
var secondDate = new Date(today.getTime() + 48 * 60 * 60 * 1000);
var employee_name = new Array(birthdates.length-1);
还有循环:
for (var i=0;i<=birthdates.length-1;i=i+1){
var fDate = new Date(birthdates[i][0]);
if (fDate.getDate() == secondDate.getDate() &&
fDate.getMonth() == secondDate.getMonth()){
//define variables for outgoing email
for (var j=0; j<=birthdates.length-1;j=j+1){
employee_name[j] = [NaN];
}
employee_name[i] = ss.getRange(i+2,6);
employee_name[i] = employee_name[i].getValues();
}
}
之后有问题的数组看起来像这样
Logger.log(employee_name);
[[[Mia-Angelica]], [NaN], [NaN], [NaN], ..., [NaN]] 我已经尝试过过滤器(布尔),但这不起作用:
employee_name_filtered = employee_name.filter(Boolean);
Logger.log(employee_name_filtered);
返回 [[[Mia-Angelica]]、[NaN]、[NaN]、[NaN]、...、[NaN]]。 我也尝试用数值(而不是 NaN)填充非字符串数组条目,然后应用
employee_name_filtered = employee_name.filter(isFinite);
Logger.log(employee_name_filtered);
返回 [[1.0], [2.0], [3.0], ..., [72.0]],所以这个过滤器方法是有效的,但是我需要它的“逆”,因为我想保留字符串。
我需要数组中的数组将值存储在满足条件的计数器变量的位置(类似于How to store data in Array using For loop in Google apps script - pass array by value)。
这是我第一次在 SO 上发布问题,所以如果我忽略了任何关于发布的“规则”,请告诉我,我会提供更多信息。 任何帮助将不胜感激!
编辑:
我最终想要得到的只是 [[米娅-当归]]。
【问题讨论】:
-
我认为在您的问题中,当您提供您期望的示例输入和输出值时,它将帮助用户了解您当前的脚本问题并思考解决方案。
标签: arrays google-apps-script filter boolean