0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Salesforce オブジェクトの詳細を取得するツールを作りたい (2)

Posted at

はじめに

前回の続きです。

作ったもの

image.png

項目 内容
Queryable Only 「Queryable」 のオブジェクトで絞る
CustomObject Only カスタムオブジェクトで絞る
Object Name オブジェクトの名前 or ラベル名 で絞る
Prefix オブジェクトのPrefix で絞る
Reload ボタン 条件で絞り、その結果をプルダウンに表示
オブジェクト一覧 条件で絞った結果のオブジェクトの一覧。名前、ラベル名、Prefixが表示されます
決定 オブジェクト一覧で指定したオブジェクトで内容を表示します
件数 条件で絞った件数

▼ 「Object Name」を「Account」で絞る
image.png

image.png

▼ 「Account」を表示
image.png

image.png

ソースコード

  • ソースコードを公開しますが、ご自身の判断・責任でご利用ください。
  • クラス名などは、適宜変更してください。
YGG_ObjectItemViewer.cls (Apexクラス)
public with sharing class YGG_ObjectItemViewer {
    
    public String  ValuePicked     {get; set;} 
    public String  Prefix          {get; set;}
    public String  Label           {get; set;}
    public String  Name            {get; set;}
    public Boolean IsAccessible    {get; set;}
    public Boolean IsCreateable    {get; set;}
    public Boolean IsCustom        {get; set;}
    public Boolean IsCustomSetting {get; set;}
    public Boolean IsDeletable     {get; set;}
    public Boolean IsQueryable     {get; set;}
    public Boolean IsSearchable    {get; set;}
    public Boolean IsUndeletable   {get; set;}
    public Boolean IsUpdateable    {get; set;}
    
    public List<YGG_ObjectItem> ObjectItemList {get; set;}

    public Boolean IsQueryableOnly    {get; set;}
    public Boolean IsCustomObjectOnly {get; set;}
    public String  ObjectName         {get; set;}
    public String  PrefixString       {get; set;}
    
    
    public String  DebugMessage       {get; set;}
    
    private List<SelectOption> listOptions;
    

    public YGG_ObjectItemViewer() {
        this.ValuePicked        = '';
        this.ObjectName         = '';
        this.PrefixString       = '';
        this.IsQueryableOnly    = false;
        this.IsCustomObjectOnly = false;
        this.objectItemList     = new List<YGG_ObjectItem>();
        initializeCustomPickList();

        this.DebugMessage       = '';
    }

    public void execute() {
        try {
            if (this.ValuePicked != null && this.ValuePicked.length() != 0) {

                this.ObjectItemList = new List<YGG_ObjectItem>();

                Map<String, sObjectType> sObjectTypeMap = Schema.getGlobalDescribe();
                sObjectType sObjectType = sObjectTypeMap.get(this.ValuePicked);

                DescribeSObjectResult sObjectDescribe = sObjectType.getDescribe();

                this.Prefix          = sObjectDescribe.getKeyPrefix();
                this.Label           = sObjectDescribe.getLabel();
                this.Name            = sObjectDescribe.getName();
                this.IsAccessible    = sObjectDescribe.isAccessible();
                this.IsCreateable    = sObjectDescribe.isCreateable();
                this.IsCustom        = sObjectDescribe.isCustom();
                this.IsCustomSetting = sObjectDescribe.isCustomSetting();
                this.IsDeletable     = sObjectDescribe.isDeletable();
                this.IsQueryable     = sObjectDescribe.isQueryable();
                this.IsSearchable    = sObjectDescribe.isSearchable();
                this.IsUndeletable   = sObjectDescribe.isUndeletable();
                this.IsUpdateable    = sObjectDescribe.isUpdateable();

                Map<String, SObjectField> fields = sObjectDescribe.fields.getMap();

                for (String key : fields.keySet()) {
                    DescribeFieldResult field = fields.get(key).getDescribe();

                    YGG_ObjectItem item = new YGG_ObjectItem();
                    item.ByteLength = field.getByteLength();
                    item.CalculatedFormula = field.getCalculatedFormula();
                    item.DefaultValue = field.getDefaultValue();
                    item.DefaultValueFormula = field.getDefaultValueFormula();
                    item.Digits = field.getDigits();
                    item.InlineHelpText = field.getInlineHelpText();
                    item.Label = field.getLabel();
                    item.Length = field.getLength();
                    item.LocalName = field.getLocalName();
                    item.Name = field.getName();
                    item.Precion = field.getPrecision();
                    item.ReferenceTarField = field.getReferenceTargetField();
                    item.RelationshipName = field.getRelationshipName();
                    item.RelationshipOrder = field.getRelationshipOrder();
                    item.Scale = field.getScale();
                    item.Type = '' + field.getType();
                    item.Accessible = field.isAccessible();
                    item.AiPredictionField = field.isAiPredictionField();
                    item.AutoNumber = field.isAutoNumber();
                    item.Calculated = field.isCalculated();
                    item.CascadeDelete = field.isCascadeDelete();
                    item.CaseSensitive = field.isCaseSensitive();
                    item.Createable = field.isCreateable();
                    item.Custom = field.isCustom();
                    item.DefaultedOnCreate = field.isDefaultedOnCreate();
                    item.DependentPicklt = field.isDependentPicklist();
                    item.DeprecatedAndHidden = field.isDeprecatedAndHidden();
                    item.ExternalID = field.isExternalID();
                    item.Filterable = field.isFilterable();
                    item.FormulaTreatNullNumberAsZero = field.isFormulaTreatNullNumberAsZero();
                    item.Groupable = field.isGroupable();
                    item.HtmlFormatted = field.isHtmlFormatted();
                    item.IdLookup = field.isIdLookup();
                    item.NameField = field.isNameField();
                    item.NamePointing = field.isNamePointing();
                    item.Nillable = field.isNillable();
                    item.Permsionable = field.isPermissionable();
                    item.RestrictedDelete = field.isRestrictedDelete();
                    item.RestrictedPicklt = field.isRestrictedPicklist();
                    item.SearchPrefilterable = field.isSearchPrefilterable();
                    item.Sortable = field.isSortable();
                    item.Unique = field.isUnique();
                    item.Updateable = field.isUpdateable();
                    item.WriteRequiresMasterRead = field.isWriteRequiresMasterRead();                

                    List <sObjectType> parentObjectList = field.getReferenceTo();
                    item.ParentObjectName = '';
                    if (parentObjectList != null) {
                        for (sObjectType parentObject : parentObjectList) {
                            item.ParentObjectName += parentObject.getDescribe().getName() + ' (' + parentObject.getDescribe().getLabel() + '), ';
                        }
                    }

                    this.ObjectItemList.add(item);
                }

            }
        } catch (Exception e) {
            this.DebugMessage = e + '';
        }
    }
    
    public void reloadPickList() {
        initializeCustomPickList();
        this.ObjectItemList = new List<YGG_ObjectItem>();
    }
    
    public Integer customPickListSize {
        get {
            return this.listOptions.size();
        }
    }

    public List<SelectOption> customPickList {
        get {
            return this.listOptions;
        }
    }
    
    private void initializeCustomPickList() {
        try {
            this.listOptions = new List<SelectOption>();

            Map<String, sObjectType> sObjectTypeMap = Schema.getGlobalDescribe();
            for (String key : sObjectTypeMap.keySet()) {
                sObjectType sObjectType = sObjectTypeMap.get(key);
                DescribeSObjectResult sObjectDescribe = sObjectType.getDescribe();

                List<YGG_ConditionData> conditionDataList = new List<YGG_ConditionData>();
                conditionDataList.add(new YGG_ConditionData4BooleanImpl(this.IsQueryableOnly, sObjectDescribe.isQueryable()));
                conditionDataList.add(new YGG_ConditionData4BooleanImpl(this.IsCustomObjectOnly, sObjectDescribe.isCustom()));
                conditionDataList.add(new YGG_ConditionData4StringStartsWithImpl(this.PrefixString, sObjectDescribe.getKeyPrefix()));
                
                List<String> dataList = new List<String>();
                dataList.add(sObjectDescribe.getName());
                dataList.add(sObjectDescribe.getLabel());
                
                conditionDataList.add(new YGG_ConditionData4StringIncludingORImpl(this.ObjectName, dataList));
                
                Boolean addFlag = conditionCheck(conditionDataList);

                if (addFlag == true) {
                    String prefix = sObjectDescribe.getKeyPrefix();
                    String label = sObjectDescribe.getName() + ' (' + sObjectDescribe.getLabel();
                    if (prefix != null) {
                        label += ' [' + prefix + ']';
                    }
                    label += ')';
                    this.listOptions.add(new SelectOption(key, label));
                }

                // 追加した結果、Listに入れることのできる最大になったら、breakする。
                if (this.listOptions.size() >= 1000) {
                    break;
                }

            }
            this.listOptions.sort();

        } catch (Exception e) {
            this.DebugMessage = e + '';
        }
    }


    private Boolean conditionCheck(List<YGG_ConditionData> conditionDataList) {
        Boolean result = true;
        
        for (YGG_ConditionData data : conditionDataList) {
            Boolean target = data.isTarget();
            if (target != null && target == false) {
                result = false;
            }
        }
        
        return result;
    }
    
    interface YGG_ConditionData {
        Boolean isTarget();
    }
    
    class YGG_ConditionData4BooleanImpl implements YGG_ConditionData {
        private Boolean Condition;
        private Boolean Data;

        public YGG_ConditionData4BooleanImpl(Boolean condition, Boolean data) {
            this.Condition = condition;
            this.Data = data;
        }
        
        public Boolean isTarget() {
            if (this.Condition == null || this.Condition == false) {
                return null;
            }
            if (this.Data == null) {
                return false;
            }
            return (this.Condition == true && this.Data == true);
        }
    }
    
    class YGG_ConditionData4StringEqualsImpl implements YGG_ConditionData {
        private String Condition;
        private String Data;

        public YGG_ConditionData4StringEqualsImpl(String condition, String data) {
            this.Condition = condition;
            this.Data = data;
        }
        
        public Boolean isTarget() {
            if (this.Condition == null || this.Condition.length() == 0) {
                return null;
            }
            if (this.Data == null) {
                return false;
            }
            return this.Condition.equals(this.data);
        }
    }
    
    class YGG_ConditionData4StringStartsWithImpl implements YGG_ConditionData {
        private String Condition;
        private String Data;

        public YGG_ConditionData4StringStartsWithImpl(String condition, String data) {
            this.Condition = condition;
            this.Data = data;
        }
        
        public Boolean isTarget() {
            if (this.condition == null || this.Condition.length() == 0) {
                return null;
            }
            if (this.Data == null) {
                return false;
            }
            return this.Data.startsWith(this.Condition);
        }
    }
    
    class YGG_ConditionData4StringIncludingImpl implements YGG_ConditionData {
        private String Condition;
        private String Data;

        public YGG_ConditionData4StringIncludingImpl(String condition, String data) {
            this.Condition = condition;
            this.Data = data;
        }
        
        public Boolean isTarget() {
            if (this.Condition == null || this.Condition.length() == 0) {
                return null;
            }
            if (this.Data == null) {
                return false;
            }
            return this.Data.indexOf(this.Condition) >= 0;
        }
    }
    
    class YGG_ConditionData4StringIncludingORImpl implements YGG_ConditionData {
        private String Condition;
        private List<String> Datas;

        public YGG_ConditionData4StringIncludingORImpl(String condition, List<String> datas) {
            this.condition = condition;
            this.Datas = datas;
        }
        
        public Boolean isTarget() {
            if (this.Condition == null || this.Condition.length() == 0) {
                return null;
            }
            if (this.Datas == null) {
                return false;
            }
            
            for (String data : this.Datas) {
                if (data.indexOf(this.condition) >= 0) {
                    return true;
                }
            }
            
            return false;
        }
    }
    
    class YGG_ObjectItem {
        public Integer ByteLength                    {get; set;}
        public String CalculatedFormula              {get; set;}
        public Object DefaultValue                   {get; set;}
        public String DefaultValueFormula            {get; set;}
        public Integer Digits                        {get; set;}
        public String InlineHelpText                 {get; set;}
        public String Label                          {get; set;}
        public Integer Length                        {get; set;}
        public String LocalName                      {get; set;}
        public String Name                           {get; set;}
        public Integer Precion                       {get; set;}
        public String ReferenceTarField              {get; set;}
        public String RelationshipName               {get; set;}
        public Integer RelationshipOrder             {get; set;}
        public Integer Scale                         {get; set;}
        public String Type                           {get; set;}
        public Boolean Accessible                    {get; set;}
        public Boolean AiPredictionField             {get; set;}
        public Boolean AutoNumber                    {get; set;}
        public Boolean Calculated                    {get; set;}
        public Boolean CascadeDelete                 {get; set;}
        public Boolean CaseSensitive                 {get; set;}
        public Boolean Createable                    {get; set;}
        public Boolean Custom                        {get; set;}
        public Boolean DefaultedOnCreate             {get; set;}
        public Boolean DependentPicklt               {get; set;}
        public Boolean DeprecatedAndHidden           {get; set;}
        public Boolean ExternalID                    {get; set;}
        public Boolean Filterable                    {get; set;}
        public Boolean FormulaTreatNullNumberAsZero  {get; set;}
        public Boolean Groupable                     {get; set;}
        public Boolean HtmlFormatted                 {get; set;}
        public Boolean IdLookup                      {get; set;}
        public Boolean NameField                     {get; set;}
        public Boolean NamePointing                  {get; set;}
        public Boolean Nillable                      {get; set;}
        public Boolean Permsionable                  {get; set;}
        public Boolean RestrictedDelete              {get; set;}
        public Boolean RestrictedPicklt              {get; set;}
        public Boolean SearchPrefilterable           {get; set;}
        public Boolean Sortable                      {get; set;}
        public Boolean Unique                        {get; set;}
        public Boolean Updateable                    {get; set;}
        public Boolean WriteRequiresMasterRead       {get; set;}

        public String  ParentObjectName              {get; set;}
   }

}
YGG_ObjectItemViewer.page (Visualforceページ)
<apex:page controller="YGG_ObjectItemViewer">
  <style>
    .def   {font-family:'メイリオ', 'Meiryo'; font-size:12px;}
    .odd   {background-color: #FFFFFF;}
    .even  {background-color: #DDFFFF;}
    
    table.gorgeous {
      /*width: 100%;*/
      border-collapse:separate;
      border-spacing: 0;
    }

    table.gorgeous th:first-child{
      border-radius: 5px 0 0 0;
    }

    table.gorgeous th:last-child{
      border-radius: 0 5px 0 0;
      border-right: 1px solid #3c6690;
    }

    table.gorgeous th {
      text-align: center;
      color:white;
      background: linear-gradient(#829ebc,#225588);
      border-left: 1px solid #3c6690;
      border-top: 1px solid #3c6690;
      border-bottom: 1px solid #3c6690;
      box-shadow: 0px 1px 1px rgba(255,255,255,0.3) inset;
      width: 25%;
      padding: 10px 0;
      font-family:'メイリオ', 'Meiryo'; font-size:12px;
    }

    table.gorgeous td {
      text-align: center;
      border-left: 1px solid #a8b7c5;
      border-bottom: 1px solid #a8b7c5;
      border-top:none;
      box-shadow: 0px -3px 5px 1px #eee inset;
      width: 25%;
      padding: 10px 0;
      font-family:'メイリオ', 'Meiryo'; font-size:12px;
    }

    table.gorgeous td:last-child {
      border-right: 1px solid #a8b7c5;
    }

    table.gorgeous tr:last-child td:first-child {
      border-radius: 0 0 0 5px;
    }

    table.gorgeous tr:last-child td:last-child {
      border-radius: 0 0 5px 0;
    }    
  </style>

  <apex:form styleClass="def">
    <div>
      <table border="0">
        <tr>
          <td class="def">
            <apex:inputCheckbox value="{!IsQueryableOnly}"/>Queryable Only
            <apex:inputCheckbox value="{!IsCustomObjectOnly}"/>CustomObject Only
          </td>
        </tr>
        <tr>
          <td class="def">
            Object Name<apex:inputText value="{!ObjectName}" styleClass="def"/>
            Prefix<apex:inputText value="{!PrefixString}" styleClass="def"/>
            <apex:commandButton value="reload" action="{!reloadPickList}" style="font-family:'メイリオ', 'Meiryo'; font-size:12px;"/>
          </td>
        </tr>
        <tr>
          <td>
            <apex:selectList value="{!ValuePicked}" size="1" styleClass="def">
              <apex:selectOptions value="{!customPickList}"/>
            </apex:selectList>
            <apex:commandButton value="決定" action="{!execute}" style="font-family:'メイリオ', 'Meiryo'; font-size:12px;"/>
            <apex:outputLabel value="{!customPickListSize}" styleClass="def"></apex:outputLabel>
          </td>
        </tr>
      </table>
    </div>
    <apex:outputpanel rendered="{!IF(ObjectItemList.Size > 0, true, false)}">
      <table class="gorgeous">
        <tr><th>Category</th><th>value</th></tr>
        <tr><td>Prefix</td><td><apex:outputText value="{!Prefix}"/></td></tr>
        <tr><td>Label</td><td><apex:outputText value="{!Label}"/></td></tr>
        <tr><td>Name</td><td><apex:outputText value="{!Name}"/></td></tr>
        <tr><td>IsAccessible</td><td><apex:outputText value="{!IsAccessible}"/></td></tr>
        <tr><td>IsCreateable</td><td><apex:outputText value="{!IsCreateable}"/></td></tr>
        <tr><td>IsCustom</td><td><apex:outputText value="{!IsCustom}"/></td></tr>
        <tr><td>IsCustomSetting</td><td><apex:outputText value="{!IsCustomSetting}"/></td></tr>
        <tr><td>IsDeletable</td><td><apex:outputText value="{!IsDeletable}"/></td></tr>
        <tr><td>IsQueryable</td><td><apex:outputText value="{!IsQueryable}"/></td></tr>
        <tr><td>IsSearchable</td><td><apex:outputText value="{!IsSearchable}"/></td></tr>
        <tr><td>IsUndeletable</td><td><apex:outputText value="{!IsUndeletable}"/></td></tr>
        <tr><td>IsUpdateable</td><td><apex:outputText value="{!IsUpdateable}"/></td></tr>
      </table>
      <div>&nbsp;</div>
      <apex:dataTable value="{!ObjectItemList}" styleClass="gorgeous" var="row" id="theTable" rowClasses="odd,even">
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Name" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Name}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Label" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Label}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="LocalName" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.LocalName}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Length" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Length}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Type" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Type}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="RelationshipName" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.RelationshipName}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="RelationshipOrder" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.RelationshipOrder}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="ParentObjectName " styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.ParentObjectName}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Custom" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Custom}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Nillable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Nillable}"/>
        </apex:column>


        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="ByteLength" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.ByteLength}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="CalculatedFormula" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.CalculatedFormula}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="DefaultValue" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.DefaultValue}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="DefaultValueFormula" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.DefaultValueFormula}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Digits" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Digits}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="InlineHelpText" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.InlineHelpText}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Precion" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Precion}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="ReferenceTarField" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.ReferenceTarField}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Scale" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Scale}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Accessible" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Accessible}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="AiPredictionField" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.AiPredictionField}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="AutoNumber" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.AutoNumber}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Calculated" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Calculated}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="CascadeDelete" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.CascadeDelete}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="CaseSensitive" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.CaseSensitive}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Createable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Createable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="DefaultedOnCreate" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.DefaultedOnCreate}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="DependentPicklt" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.DependentPicklt}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="DeprecatedAndHidden" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.DeprecatedAndHidden}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="ExternalID" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.ExternalID}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Filterable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Filterable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="FormulaTreatNullNumberAsZero" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.FormulaTreatNullNumberAsZero}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Groupable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Groupable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="HtmlFormatted" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.HtmlFormatted}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="IdLookup" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.IdLookup}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="NameField" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.NameField}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="NamePointing" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.NamePointing}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Permsionable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Permsionable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="RestrictedDelete" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.RestrictedDelete}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="RestrictedPicklt" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.RestrictedPicklt}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="SearchPrefilterable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.SearchPrefilterable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Sortable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Sortable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Unique" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Unique}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="Updateable" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.Updateable}"/>
        </apex:column>
        <apex:column styleClass="def">
          <apex:facet name="header">
            <apex:outputText value="WriteRequiresMasterRead" styleClass="def"/>
          </apex:facet>
          <apex:outputText value="{!row.WriteRequiresMasterRead}"/>
        </apex:column>
      </apex:dataTable>
    </apex:outputpanel>
    <apex:outputText ></apex:outputText>
  </apex:form>
</apex:page>

ご了承ください

  • まだまだ勉強中の部分もあります。間違っている箇所もあるかもしれません。
  • Salesforce は、この時点のバージョン(2022年4月~5月頃) での内容になります。今後、仕様変更が変わることによって、内容の通りにならない可能性もあります。ご了承ください。
  • また、URLなども変更になっている可能性もあります。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?