ZohoCRM-Deluge-函數應用-時間驗證

關於Deluge

Zoho專有腳本語言可以處理開發人員可能要執行的任何任務。 憑藉內置的包裝程序和強大的執行引擎,它已發展成爲最快,最靈活的腳本語言之一。(官方介紹自動翻譯結果)
deluge

我這次要幹什麼

使用ZohoCRM不到3個月,想在裏面配置一個字段驗證規則,確保結束時間必須大於開始時間。

實現的步驟

找可行的方法

中國的服務商建議我用函數驗證實現,他們服務是收費的,所以只能告訴我怎麼實現,我要自己研究實現。
鼓搗腳本我最擅長了,那就開始對着文檔敲吧,當然敲之前心裏還是屢一下實現的邏輯,雖然這個並不複雜。

函數實現的邏輯

在保存和編輯表單時,驗證開始時間和結束時間的關係。

  1. 驗證結束時間必須大於開始時間。
  2. 驗證開始時間必須小於結束時間。

將上述函數驗證分別分配到結束時間和開始時間的驗證邏輯即可。

實現的代碼

Zoho deluge

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”,使用說明上也沒說要加。
DateTime使用說明
結果獲取的時間只有日期,時間都是00:00:00


endTime = entityMap.get("field17").toDateTime();
startTime = entityMap.get("field16").toDateTime();

官方的客服是很熱情,但是一直沒有看出來這個問題,給了我一個邏輯更復雜的驗證代碼,讓我測試,直到第二次才解決,遠程的時候也是必須使用zoho join,那叫一個卡,經常說不能控制。
TeamViewer已經做得那麼好了,不能兼容一下嗎?

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時間,必須指定格式,沒接下茬兒。

那我就寫出來分享一下吧,希望能節省你一點兒時間。

官方的答覆如下,供您參考:

Please find the below clarifications from the deluge team

toTime() and toTime(yyyy-MM-dd’T’HH:mm:ss); and toDateTime(yyyy-MM-dd’T’HH:mm:ss); -->These are same, but will differ for the from format.On conversion of the format, ie From which format to which format , it will be differ.

zoho.currenttime.toTime();

from CRM field, we will display fields in ISO format so have to use the below format.

endTime = entityMap.get(“field16”).toDateTime(yyyy-MM-dd’T’HH:mm:ss);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章