ZohoCRM-Deluge-函数应用-时间验证
关于
Zoho专有脚本语言可以处理开发人员可能要执行的任何任务。 凭借内置的包装程序和强大的执行引擎,它已发展成为最快,最灵活的脚本语言之一。(官方介绍自动翻译结果)
我这次要干什么
使用不到3个月,想在里面配置一个字段验证规则,确保结束时间必须大于开始时间。
实现的步骤 找可行的方法
中国的服务商建议我用函数验证实现,他们服务是收费的,所以只能告诉我怎么实现,我要自己研究实现。
鼓捣脚本我最擅长了,那就开始对着文档敲吧,当然敲之前心里还是屡一下实现的逻辑,虽然这个并不复杂。
函数实现的逻辑
在保存和编辑表单时,验证开始时间和结束时间的关系。
验证结束时间必须大于开始时间。验证开始时间必须小于结束时间。
将上述函数验证分别分配到结束时间和开始时间的验证逻辑即可。
实现的代码
Zoho
entityMap = crmAPIRequest.toMap().get("record");
// field17,field16 的确认参考下图
endTime = entityMap.get("field17").toTime("yyyy-MM-dd'T'HH:mm:ss");
startTime = entityMap.get("field16").toTime("yyyy-MM-dd'T'HH:mm:ss");
response = Map();
if(endTime > startTime)
{response.put('status','success');
}
else
{response.put('status','failure');response.put('message','服务开始时间不能晚于结束时间.');
}
return response;
确认字段的名称需要到开发者空间的API里找。
我踩过的坑
本身这件事情可以自己搞定的,结果花费了很多时间去找zoho的官方客服,官方客户直接在线联系即可,非常方便,服务及时,热情,有问必答,帮写代码,文末附上他们提供的函数代码。
为什么花了这么多时间呢?代码就这么简单。
一开始我的代码是这么写的,没加 “yyyy-MM-dd’T’HH:mm:ss”,使用说明上也没说要加。
结果获取的时间只有日期,时间都是00:00:00
endTime = entityMap.get("field17").toDateTime();
startTime = entityMap.get("field16").toDateTime();
官方的客服是很热情,但是一直没有看出来这个问题,给了我一个逻辑更复杂的验证代码,让我测试,直到第二次才解决,远程的时候也是必须使用zoho join,那叫一个卡,经常说不能控制。
已经做得那么好了,不能兼容一下吗?
Zoho 官方给的函数验证代码
entityMap = crmAPIRequest.toMap().get("record");
d2 = entityMap.get("field16").toDateTime();
d1 = entityMap.get("field6").toDateTime();
response = Map();
diff = d1.daysBetween(d2);
if(diff > 0)
{response.put('status','success');
}
else if(diff == 0)
{hdiff = d1.hoursbetween(d2);if(hdiff == 0){m1 = d1.getMinutes();m2 = d2.getMinutes();h1 = d1.getHour();h2 = d2.getHour();if(h1 < h2){response.put('status','success');}else if(h1 == h2){m = m1 - m2;if(m >= 0){response.put('status','failure');response.put('message','end Time should earlier then start time.');}}}else{response.put('status','success');}
}
else if(diff < 0)
{response.put('status','failure');response.put('message','end Time should earlier then start time.');
}
return response;
我的提议
把文档写清楚,你好,我好,大家好,自助解决问题,节省多少时间。
本着造福后人的原则,我就给zoho 提了些意见,希望在使用说明上加强一下,但是人家的回复是这是因为CRM的时间是ISO时间,必须指定格式,没接下茬儿。
那我就写出来分享一下吧,希望能节省你一点儿时间。
官方的答复如下,供您参考:
find the below from the team
() and (yyyy-MM-dd’T’HH:mm:ss); and (yyyy-MM-dd’T’HH:mm:ss); -->These are same, but will for the from .On of the , ie From which to which , it will be .
zoho..();
from CRM field, we will in ISO so have to use the below .
= .get(“”).(yyyy-MM-dd’T’HH:mm:ss);