發表文章

目前顯示的是有「GroupMember」標籤的文章

抓出 Queue 裡面所有的 User / Get All Users in a Queue

想抓出 Queue 裡面所有的 User? 在最簡單的情況下,queue 裡面裝的如果全是 user ,那就只要用 SOQL 去撈即可。 但是有一點超乎直覺的是,當我們要從 Group 裡抓出 GroupMember,只要 SELECT GroupId,Id,UserOrGroupId FROM GroupMember WHERE GroupId = '00Gxxxxxxxxxxxxxxx' 可是 Salesforce 裡不但沒有 QueueMember 這個 object,甚至也沒有 Queue 這個 object。不知道要去哪裡查 queue Id。 蛤?為什麼 queue 沒有 object? 因為所謂的 queue,其實就是一種特別的 group。 所以上面那行 SOQL 是完全通用的。 SELECT GroupId,Id,UserOrGroupId FROM GroupMember WHERE GroupId = '00Gxxxxxxxxxxxxxxx' 此處 criteria 的 GroupId,其實代表的也是 queue 的 Id。 queue 的 Id,的確也是 00G 開頭的,是貨真價實的 Group 無誤。 那如果想撈的目標 group 裡面不單只有 user 怎麼辦? 如果 group 裡全都是直接裝著 user record,那上面的 SOQL 就很夠用了。但是 Group 裡面除了直接裝 user,還有可能也裝著別的 sub group。 這時候你就需要往下挖一層,再做一次: SELECT GroupId,Id,UserOrGroupId FROM GroupMember WHERE GroupId = ' sub_group_id ' (視情況需要,你可能要不斷地挖上好幾層,直到沒有 sub group 為止) 更複雜一點的情況是: group 裡還可以裝 UserRole。 而且 UserRole 還會有一個對應 00G  開頭的 Id,以致於它躲在 GroupMember 裡的時候,看起來就是一個普通的 Group。結果你嘗試用 UserRole 的 00G Id 一撈, SELECT GroupId,Id,UserOrGroupId FROM GroupMember WHERE ...