我有一个Podio应用程序处理客户帐户,每个客户都有一个经理(podio联系人)。所有这些数据都存在于另一个系统中,我们正在编写软件来同步这两个数据。该软件是用java编写的,并使用podio api
我目前能够阅读和设置所有类型的字段,但经理字段(联系人)除外。
这是在加载客户时从API收到的内容:
但是如何将经理参考更新为其他内容呢?
我尝试过类似的事情:
List<Map<String, Object>> list = new ArrayList<>();
HashMap<String, Object> values = new HashMap<>();
list.add(values);
HashMap<String, Object> value = new HashMap<>();
values.put("value", value);
value.put("mail", "employee@email.com");
//also tried user_id and profile_id
然后使用
ItemAPI.updateItemFieldValues(int itemId, int fieldId,
List<Map<String, Object>> values, boolean silent, boolean hook)
更新字段。我哪里错了?
答案 0 :(得分:1)
设定:
带有“联系”字段的Podio应用程序,配置为“添加新地址时工作区成员/共享”(如此screnshot)
Ruby
中的工作示例 item_id = <some_item_id>
field_id = <contact_field_numeric_id>
field_external_id = <contact_field_external_id>
# set to empty value by field_id
empty_value = []
Podio::ItemField.update(item_id, field_id, single_value)
# set to single value by field_id
single_value = [{'value' => {'type' => 'user', 'id' => <Podio user id>}}]
Podio::ItemField.update(item_id, field_id, single_value)
# set to multiple values by external field id
multi_values = [{'value' => {'type' => 'user', 'id' => <Podio user id>}},
{'value' => {'type' => 'user', 'id' => <another Podio user id>}}]
Podio::ItemField.update(item_id, field_external_id, multi_values)
将此联系人字段设置为新值single_value
或新值列表multiple_value
。另外,我强烈建议您再次考虑一下您的数据架构。使用Podio Contact应用类型并使用Reference
字段而不是使用Contact
字段可能更具可扩展性。
Java 示例:
HashMap<String, Object> pair = new HashMap<>();
HashMap<String, Object> value = new HashMap<>();
List<Map<String, Object>> list = new ArrayList<>();
// set to empty value
list = new ArrayList<>();
ItemAPI.updateItemFieldValues(<itemId>, <fieldId>, list, <silent>, <hook>)
// set to real value
value = new HashMap<>();
list = new ArrayList<>();
pair.put("id", <user_id>);
pair.put("type", "user");
value.put("value", pair);
list.add(value);
ItemAPI.updateItemFieldValues(<itemId>, <fieldId>, list, <silent>, <hook>)