We want to create Salesforce Lightning Custom Object Calendar and make it available for all the sales reps. How do I do it rather than asking each user to create their own.
3 Answers
FIrst create a public group with all the Users needed
Then use the below code.If you are looking to use a public calendar you will have to assign the id of public calendar to publisher Id of calendarView that you insert.
Group userGroup = [
SELECT Id
FROM Group
WHERE Name = 'Marketing User'//Replace this with name of your public group
LIMIT 1
];
List<Id> groupId = new List<Id>();
groupId.add(userGroup.id);
List<GroupMember> groupMembers = [
SELECT UserOrGroupId
FROM GroupMember
WHERE GroupId IN: groupId
];
List<CalendarView> calendarViews = new List<CalendarView>();
for (GroupMember groupMember : groupMembers) {
CalendarView calendarView = new CalendarView(
Name = 'AccountCalendar',
SobjectType = 'Investment__c',
StartField = 'createddate',
DisplayField = 'Name',
OwnerId = groupMember.UserOrGroupId
);
calendarViews.add(calendarView);
}
insert calendarViews;
-
Notes: 1) that if membership of the public group changes over time, you'll need to add/remove
CalendarView
records in either one-off or via scheduled job; (2) If sharing object calendars filtered by listviews, you need to includeListViewFilterId
as part of theCalendarView
construction– cropredyCommented Jul 2, 2023 at 19:15
Currently, the Salesforce Public Calendars that were referenced by SalesforceMeach above only show Events. The author specified Custom Object calendars, which currently can only be created as private calendars. Through the API and/or custom apex code you can push out a private calendar to any number of users using the CalendarView object. But this is a clunky solution at best because any time you want to make a change, that has to be manually pushed out as well. There is an idea that can be voted on to add sharable custom object calendars as a feature: https://ideas.salesforce.com/s/idea/a0B8W00000GdblHUAR/allow-sharing-of-custom-object-calendars-ideally-as-a-list-view-type
Have you tried using Public Calendars and Resources within Salesforce? You can learn a little more about it here: https://help.salesforce.com/articleView?id=customize_groupcal.htm&type=5
Summarizing the link above: Generating new calendars can be done through setup. Setup -> Public Calendars and Resources -> New. Complete the information requested and make sure to check Active. Then you can update the sharing settings by identifying the roles, users, or groups that have access to this calendar.
Finally, on the Calendar tab in the Lightning Experience, individual users can add the new calendar to their view on the "Other Calendars" section.
Let me know if this answered your question and please mark it correct if so! Thanks.