2014-09-26 67 views
0

我試圖在CiviCRM中將電子郵件地址設置爲空白。我連載通過REST數組作爲下方後(代碼就是Groovy):通過REST API將CivCRM電子郵件設置爲空白

def rest = [ 
       json: 1, 
       api_key: apiKey, 
       key: siteKey, 
       debug: 1, 
       version: 3, 
       entity: 'Contact', 
       action: 'create', 
       contact_type: contact_type, 
       overwriteblank:true, 
       id: record.crID, 
       rest["email[1][email]"] = modified.value as String 
       rest["email[1][location_type_id]"] = 1 
     ] 

我已經試過了「overwriteblank」選項 - 但電子郵件似乎仍然沒有被設置爲空白。

謝謝

回答

2

電子郵件地址是與聯繫人不同的API實體(因爲聯繫人可以具有無限數量的電子郵件地址)。您只需獲取contact_id = whatever的電子郵件地址,然後將其刪除即可。

$result = civicrm_api3('Email', 'get', array('contact_id' => $YOUR_CONTACT_ID)); 

然後檢查錯誤和迭代$結果[「值」]後:

$deleted = civicrm_api3('Email', 'delete', array('id' => $YOURRESULTROW['id'])); 

隨着SQL方法,你不刪除電子郵件這麼多,因爲那個人的電子郵件設置是一個空字符串。

+0

這些都是PHP API調用,但相應的應該適用於您的REST方法。 – 2014-10-09 01:57:49

+0

REST as entity = Email&id = 33&action = delete&debug = 1&sequential = 1&json = 1&api_key = {yoursitekey}&key = {yourkey} – Interlated 2014-10-09 03:42:10

-1

我能做的最好的事情就是通過sql。

String sql_update = """update civicrm_email set email = "" where contact_id = ?""" 
+0

這意味着您將電子郵件記錄保存爲空字符串。最終,你想刪除電子郵件記錄,所以很明顯,聯繫人沒有電子郵件。 – 2014-10-09 01:56:07

+0

電子郵件被設置爲空白而不是在源系統中刪除,因此是故意的。至於公民的最佳運作是否是一個好問題。感謝您的建議。 – Interlated 2014-10-09 03:35:52

+0

@相關,通常CiviCRM會嘗試不存儲空白電子郵件。另一方面,我想知道你是否願意幫助我們在ttp://area51.stackexchange.com/proposals/77367/civicrm上爲CiviCRM啓動一個新的StackExchange站點 - 我們有很多人對此感興趣,但是我們還需要另外36名在另一個StackExchange站點上擁有200多名聲譽的人員進行提交,然後才能啓動。你會幫助我們嗎?謝謝! – 2014-12-09 22:34:40