Podio API - 更新联系人参考
Podio API - updating contact reference
我有一个处理客户账户的跑道应用程序,每个客户都有一个经理(跑道联系人)。所有这些数据都驻留在另一个系统中,我们正在编写软件来同步这两个系统。该软件是用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)
更新字段。我哪里错了?
设置:
带有 'Contact' 字段的跑道应用程序,配置为 'Workspace members / share when new address added'(像这个截图)
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>)
我有一个处理客户账户的跑道应用程序,每个客户都有一个经理(跑道联系人)。所有这些数据都驻留在另一个系统中,我们正在编写软件来同步这两个系统。该软件是用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)
更新字段。我哪里错了?
设置:
带有 'Contact' 字段的跑道应用程序,配置为 'Workspace members / share when new address added'(像这个截图)
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>)