2012-01-25 4 views
2

누구나 모든 공개 일정을 가져 오기 위해 쿼리를 수행하는 방법을 알고 있습니까? 설치 프로그램 ... 사용자 지정 ... 활동으로 이동하여 목록을 볼 수 있습니다. 공개 일정 및 리소스Salesforce 인스턴스에서 모든 공용 달력을 가져 오는 SOQL은 무엇입니까?

이러한 일정 개체는 무엇입니까?

내 목표는 사용자가 쉽게 찾을 수 있도록 VisualForce 페이지에서 이러한 캘린더를 표시하는 방법을 찾는 것입니다.

답변

0

Salesforce는 고객이 직접 쿼리 할 수 ​​있도록 공개 캘린더 개체를 직접 노출하지 않았습니다.

공개 캘린더는 표준 개체 인 023 네임 스페이스에 속하는 것으로 보이지만 해당 네임 스페이스가있는 스키마에서 개체를 찾을 수 없기 때문에 SFDC가이 파일을 숨겨 졌다고 생각합니다.

+0

감사합니다. 나는이 결론에 도달했지만 거기에 해결 방법이 있기를 바랄 수 있습니다! 그 동안, 나는 달력 ID를 저장하기 위해 Custom Setting 객체를 생성 할 것이다. 이것은 관리 할 고통입니다! – Bryan

1

ID에 .getSobjectType()을 실행하면 캘린더 개체로 표시됩니다. 해당 개체를 쿼리하고 쿼리하면 사용할 수 없다고 표시됩니다. 이제는 맞춤 설정이 유일한 경로 인 것처럼 보입니다.

0

Visualforce에서 목록을 표시하려면 캘린더 페이지에서 PageReference GetContent() 메소드를 사용하여 해결 방법을 사용하고 html에서 세부 정보를 가져올 수 있습니다. 이 APEX에서 작동하지 않습니다

참고 트리거 ..

Public Class CalendarResource{ 
    public Id crId {get;set;} 
    public String label {get;set;} 
    public String type {get;set;} 
} 

Pagereference r = new PageReference('/_ui/common/data/LookupResultsFrame?lkfm=swt&lknm=cal&lktp=023&cltp=resource&lksrch=#'); 
String html = r.getContent().toString(); 
List<CalendarResource> cals = new List<CalendarResource>(); 

Matcher m = Pattern.compile('lookupPick\\(\'swt\',\'cal_lkid\',\'cal\',\'\',\'(.*?)\',\'(.*?)\',\'\',\'\'\\)">(.*?)</a></TH><td class=" dataCell ">(.*?)<\\/td><\\/tr>').matcher(html); 

//While there are labels 
while (m.find()) { 
    //system.debug(m.group(3)); 
    //system.debug(m.group(4)); 

    CalendarResource cr = new CalendarResource(); 
    cr.crId = m.group(1); 
    cr.label = m.group(2); 
    cr.type = m.group(4); 
    cals.add(cr); 
} 
for(CalendarResource cr : cals){ 
    system.debug(cr.crId+'__'+cr.label+'___'+cr.type); 
} 
관련 문제