【问题标题】:Zoho Deluge - How to compare list entries in DelugeZoho Deluge - 如何在 Deluge 中比较列表条目
【发布时间】:2022-06-19 02:42:38
【问题描述】:

我目前有两个列表,一个来自外部 api (splynx),它返回所有客户的列表,另一个列表返回来自 Zoho crm 中联系人模块的所有帐户名称的列表,目前,我只想编写一个代码来确认两个列表是否包含匹配的条目(例如 splynx 列表中的一个条目与 crm 列表中的另一个条目匹配)。 我真正想要实现的是对于每个匹配条目,我想使用 Splynx 中的客户 ID 字段更新 crm 记录,并在 CRM 的帐户模块中使用名为 Splynx ID 的自定义字段(因为此 ID 是自动生成的,以便维护两个应用程序的一致性)。我想知道这是否可以实现。

这是我目前写的代码

headersmap = Map();
headersmap.put("Authorization","Basic xxxxxxx);
response = invokeurl
[
    url :"https://selfcare.dotmac.ng/api/2.0/admin/customers/customer?"
    type :GET
    headers:headersmap
];
AccountlistSplynx = List();
li1 = List();
li2 = List();
li3 = List();
rows = response.toJSONList();
rows1 = response.toJSONList();
rows2 = response.toJSONList();
for each  row in rows
{
    Name = row.getjson("name");
    AccountlistSplynx.add(Name);
}
for each  row in rows1
{
    Address = row.getjson("street_1");
    li1.add(Address);
}
for each  row in rows2
{
    CustomerID = row.getjson("id");
    li2.add(CustomerID);
}

Accountlistzoho = List();
mp = Map();
contacts = zoho.crm.getRecords("Contacts");
for each  contact in contacts
{
    account = ifnull(contact.getJSON("Account_Name"),Map());
    if(account.size() > 0)
    {
        accountname = account.getJSON("name");
        Accountlistzoho.add(accountname);
    }
}

if ( Accountlistzoho == AccountlistSplynx ) 
{
    info "Matching records!";

}
else 
{
    info "No matching records!";
}

我还想知道这是否是尝试实现此目标的最佳途径,因为在我意识到我没有为客户创建自定义字段之前,我已经将这些联系人从 Splynx 导入到 CRM 中

【问题讨论】:

    标签: json zoho deluge


    【解决方案1】:

    看看相交列表函数:

    <variable> = <listVariableOne>.intersect( <listVariableTwo> );
    

    注意!

    <listVariableOne>.intersect( <listVariableTwo> );
    

    <listVariableTwo>.intersect( <listVariableOne> );
    

    应该返回相同的交集,但有时其中一个调用会返回一个较小的集。要解决此问题,请以两种方式调用 intersect(),如果它们不同,请使用提供预期集合的方法。


    对于这个任务 intersect() 将使用类似这样的东西

    headersmap = Map();
    headersmap.put("Authorization","Basic xxxxxxx);
    response = invokeurl
    [
        url:"https://selfcare.dotmac.ng/api/2.0/admin/customers/customer?"
        type :GET
        headers:headersmap
    ];
    
    // Note: Using a Map to associate Splynx names and ids.
    SplynxMap = Map();
    rows = response.toJSONList();
    for each row in rows
    {
      SplynxMap.put(row.getjson("name"), row.getjson("id");
    }
    
    // Here make a list of Splynx names based on the map keys.
    AccountlistSplynx = List();
    AccountlistSplynx = SplynxMap.keys();
    
    // Intersect() function
    ItemsToProcess = Accountlistzoho.intersect(AccountlistSplynx);
    
    
    // Get Zoho record and update with Splynx Customer ID
    // Here is one way to do this, but probably not the best or 
    // most efficient.  There is should be a way in CRM to request
    // a specific record based on the "name" field and avoid
    // looping through contacts for each item to process.
    for each item in itemsToProcess
    {
      for each contact in contacts
      {
        account = ifnull(contact.getJSON("Account_Name"),Map());
        if(account.size() > 0)
        {
            if ( item ==  account.getJSON("name"))
            {
              account.Splynx_ID = SplynxMap.get(item);
            }
        }
      }
    }
    

    【讨论】:

    • 这很有效,谢谢,您能帮我完成使用他们的 Splynx ID 更新这些记录的过程吗?
    • @PromiseOkoli,我添加了一些关于将 Splynx ID 添加到 Zoho 记录的方法的更多详细信息。看看它可以帮助您完成使用 Splynx ID 更新这些记录的过程
    【解决方案2】:

    根据您的需求,如果 Zoho CRM 记录在 Splynx 记录中匹配,您是否要更新它们?

    第 1 步: 将所有 Splynx 记录存储到 deluge 中的 List 数据类型变量中。 将所有 Zoho 记录存储到 deluge 中的 List 数据类型变量中。

    第 2 步: 假设两个 List 的 API 字段名称不相等。

    第 3 步: 如果我们假设帐户名称是说它匹配的条件,这就是如何确定 Zoho 记录中的匹配记录。请注意,api_field_name 或键会与您的实际数据不同。

    SplynxData = {{"s_account_name":"Account A","ID":"s_ID_1"},{"s_account_name":"Account B","ID":"s_ID_2"},{"s_account_name":"Account C","ID":"s_ID_3"},{"s_account_name":"Account D","ID":"s_ID_4"}};
    ZohoData = {{"z_account_name":"Account A","ID":"z_ID_1"},{"z_account_name":"Account B"},{"z_account_name":"Account C"}};
    
    ZohoData_group_Name = Map();
    for each ZohoData_item in ZohoData{
        item_map = Map();
        ZohoData_group_Name.put(ZohoData_item.get('z_account_name'),ZohoData_item);
    }
    for each SplynxData_item in SplynxData{
        matched_zoho_item =  ZohoData_group_Name.get(SplynxData_item.get('s_account_name')) ;
        if (matched_zoho_item != null){
            info matched_zoho_item;
            //Do zoho.crm.updateRecords methods
            
        }
    }
    

    请参考此链接了解如何更新 Zoho Records https://www.zoho.com/deluge/help/crm/update-record.html

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 2021-05-14
      • 2022-09-26
      • 2020-12-29
      • 2020-01-09
      • 2022-11-16
      • 2021-04-13
      • 2022-12-17
      • 2021-12-27
      相关资源
      最近更新 更多