Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google sheets脚本,每个功能都与&&;运算符和设置要检查数组的值范围_Javascript_Arrays_Google Apps Script_Google Sheets_Google Sheets Api - Fatal编程技术网

Javascript Google sheets脚本,每个功能都与&&;运算符和设置要检查数组的值范围

Javascript Google sheets脚本,每个功能都与&&;运算符和设置要检查数组的值范围,javascript,arrays,google-apps-script,google-sheets,google-sheets-api,Javascript,Arrays,Google Apps Script,Google Sheets,Google Sheets Api,后续行动 我几乎是在尝试复制我用来通知用户“坏”数据的条件格式,但是使用脚本来防止发送坏数据并给出唯一的错误消息。根据我上一个问题的答案,检查和防止不发送数据或重复数据是有效的,但我现在坚持防止发送与四位数格式不匹配的数据 我的条件格式是在任何不等于1000到9999或介于1000到9999之间的内容上将背景颜色设置为橙色,但我在脚本编写过程中遇到了问题--我尝试将这两个值之间的任何内容的否定值设置为“false”,这将提示错误消息,而使用“true”让脚本的其余部分运行,以发送数据和通知电子邮

后续行动

我几乎是在尝试复制我用来通知用户“坏”数据的条件格式,但是使用脚本来防止发送坏数据并给出唯一的错误消息。根据我上一个问题的答案,检查和防止不发送数据或重复数据是有效的,但我现在坚持防止发送与四位数格式不匹配的数据

我的条件格式是在任何不等于1000到9999或介于1000到9999之间的内容上将背景颜色设置为橙色,但我在脚本编写过程中遇到了问题--我尝试将这两个值之间的任何内容的否定值设置为“false”,这将提示错误消息,而使用“true”让脚本的其余部分运行,以发送数据和通知电子邮件。然而,这意味着即使我的数据正确,也会有错误的值。删除否定可以让任何东西通过,就像它实际上没有检查它一样。有什么想法吗

我要问的部分是最后一个else if语句:

else if (!data.every(function(num) {return num >= 1000 && num <= 9999})) {
    SpreadsheetApp.getUi().alert("You have incorrectly formatted tallies, tallies must be four digits.", SpreadsheetApp.getUi().ButtonSet.OK);
  }
else如果(!data.every(function(num){return num>=1000&&num=1,如果0允许,如果数据长度小于1,则拒绝
如果(重复。长度!==0){
SpreadsheetApp.getUi().alert(“您的计数包括重复项,请删除它们然后重试。”,SpreadsheetApp.getUi().ButtonSet.OK);
Logger.log(重复);
}
else if(dataArray.length==0){
SpreadsheetApp.getUi().alert(“您没有输入任何计数。”,SpreadsheetApp.getUi().ButtonSet.OK);
}
如果(!data.every(函数(num){return num>=1000&&num=1000,num=1000&&tally 9999;});
//使用或(| |)获取大于或小于的计数,字母/符号如何?使用非良好范围?
//https://www.youtube.com/watch?v=hPCIOohF0Fg&list=PLv9Pf9aNgemvD9NFa86_udt-NWh37efmD&index=8
//上面的排序方法链接
*/
否则{
//代码的其余部分
var result=SpreadsheetApp.getUi().alert(“您将要通知计划程序以下计数次数:“+tallyMonthNumberOnly,SpreadsheetApp.getUi().ButtonSet.OK\u CANCEL”);
如果(结果===SpreadsheetApp.getUi().Button.OK){
//发送电子邮件和数据的代码

据我所知,在函数
sendDataAndTimestamp2()
中,您需要清除
数据中的空值。可以使用
过滤器(字符串)
方法:

var data = sourceRange.getValues().filter(String); // <-- here

. . .

else if (!data.every(function(num) {return num >= 1000 && num <= 9999}))

. . .
顺便说一句,线路可以缩短一点:

else if (!data.every(x => (x >= 1000) && (x <= 9999)))

如果(!data.every(x=>(x>=1000))和(x)这里的问题到底是什么?您是否收到任何错误?您的代码中具体在哪里执行了提到的条件?最后一个if语句不起作用。我已经说过我的错误是什么。错误消息是什么?您是否也可以将其发布到这里?您是否也有一个模型表?“您的计数格式不正确,计数必须是四位数。“这是我自己的错误消息,只是它不应该出现良好的值。由于工作域限制,我无法在网络之外共享。我实际上并没有试图消除它们,我只是试图迫使用户在发送数据值之前更正数据值,所以我们没有遇到“为什么我的计数没有运行”的问题。”因为它是不正确的,然后必须找到不正确的一个。啊,好的,所以过滤器(字符串)不会干扰比较操作,我假设我需要将它们保持为数字格式。因此getValues将拾取范围内的空单元格,而这些单元格都小于1000,因此它们将触发else if。谢谢!如果要保留空单元格(在本例中获取错误消息),可以应用
.flat()
而不是
过滤器(字符串)
。这样您将获得一维数组而不是二维数组。如果需要二维数组,则只能在“else If”行中应用展开方法:
else If(!data.flat().every(x=>(x>=1000)&&(x
else if (!dataArray.every(function(num) {return num >= 1000 && num <= 9999}))
else if (!data.every(x => (x >= 1000) && (x <= 9999)))