Salesforce World Tour Tokyo 2019 ミニハック1
Salesforce World Tour Tokyo 2019 に参加しました。 その中で、Trailhead Zone内でミニハックにチャレンジする企画があり、二問だけ解いたので解き方などを残しておきます。
今まで解答をブログに書いたことがなかったのですが、会社の人に「ブログ書くまでがミニハック芸人だよ」と言われて「ほーん、なるほど」と思って書きましたが、とても面倒だったのでまず先達を讃えたいと思います。
レジェンドミニハック芸人
本題に入ります。
初学者がつまりそうなところだけを書きます。
問題を横目に見ながらお読みください。
課題1 人事部アプリを作る
これが一番シンプルで簡単なミニハックです。
人事部用プロファイルを作成しますが、私は既存プロファイルをコピーして作成しました。
人事部プロファイルのメタデータ
<?xml version="1.0" encoding="UTF-8"?> <Profile xmlns="http://soap.sforce.com/2006/04/metadata"> <applicationVisibilities> <application>HRApp</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__AppLauncher</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Chatter</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Community</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Content</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Insights</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__LightningBolt</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__LightningInstrumentation</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__LightningSales</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__LightningSalesConsole</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__LightningService</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Marketing</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Platform</application> <default>false</default> <visible>false</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Sales</application> <default>true</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Service</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__ServiceConsole</application> <default>false</default> <visible>false</visible> </applicationVisibilities> <applicationVisibilities> <application>standard__Sites</application> <default>false</default> <visible>true</visible> </applicationVisibilities> <custom>true</custom> <fieldPermissions> <editable>true</editable> <field>Project__c.AccountId__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>Project__c.description__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>Project__c.enddate__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>false</editable> <field>Project__c.projectTerm__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>Project__c.startdate__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>animal__c.animalurl__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>animal__c.description__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>animal__c.zetsu1__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>park__c.acre__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>park__c.description__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>park__c.hogoku__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>seeing__c.animalid__c</field> <readable>true</readable> </fieldPermissions> <fieldPermissions> <editable>true</editable> <field>seeing__c.parkid__c</field> <readable>true</readable> </fieldPermissions> <objectPermissions> <allowCreate>true</allowCreate> <allowDelete>true</allowDelete> <allowEdit>true</allowEdit> <allowRead>true</allowRead> <modifyAllRecords>true</modifyAllRecords> <object>Project__c</object> <viewAllRecords>true</viewAllRecords> </objectPermissions> <objectPermissions> <allowCreate>true</allowCreate> <allowDelete>true</allowDelete> <allowEdit>true</allowEdit> <allowRead>true</allowRead> <modifyAllRecords>true</modifyAllRecords> <object>animal__c</object> <viewAllRecords>true</viewAllRecords> </objectPermissions> <objectPermissions> <allowCreate>true</allowCreate> <allowDelete>true</allowDelete> <allowEdit>true</allowEdit> <allowRead>true</allowRead> <modifyAllRecords>true</modifyAllRecords> <object>park__c</object> <viewAllRecords>true</viewAllRecords> </objectPermissions> <objectPermissions> <allowCreate>true</allowCreate> <allowDelete>true</allowDelete> <allowEdit>true</allowEdit> <allowRead>true</allowRead> <modifyAllRecords>true</modifyAllRecords> <object>seeing__c</object> <viewAllRecords>true</viewAllRecords> </objectPermissions> <userLicense>Salesforce</userLicense> <userPermissions> <enabled>true</enabled> <name>ActivateContract</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ActivateOrder</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ActivitiesAccess</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AddDirectMessageMembers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AllowUniversalSearch</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AllowViewKnowledge</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ApexRestServices</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ApiEnabled</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AssignPermissionSets</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AssignTopics</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>AuthorApex</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>BulkMacrosAllowed</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CanInsertFeedSystemFields</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CanUseNewDashboardBuilder</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CanVerifyComment</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChangeDashboardColors</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterEditOwnPost</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterEditOwnRecordPost</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterFileLink</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterInternalUser</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterInviteExternalUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ChatterOwnGroups</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ConnectOrgToEnvironmentHub</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ContentAdministrator</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ContentWorkspaces</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ConvertLeads</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateContentSpace</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateCustomizeDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateCustomizeFilters</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateCustomizeReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateDashboardFolders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateLtngTempFolder</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreatePackaging</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateReportFolders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateTopics</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CreateWorkspaces</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>CustomizeApplication</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>DataExport</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>DelegatedTwoFactor</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>DeleteActivatedContract</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>DeleteTopics</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>DistributeFromPersWksp</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditActivatedOrders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditBillingInfo</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditBrandTemplates</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditCaseComments</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditEvent</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditHtmlTemplates</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditKnowledge</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditMyDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditMyReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditOppLineItemUnitPrice</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditPublicDocuments</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditPublicFilters</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditPublicTemplates</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditReadonlyFields</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditTask</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EditTopics</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EmailMass</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EmailSingle</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EnableCommunityAppLauncher</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>EnableNotifications</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ExportReport</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>GiveRecognitionBadge</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ImportCustomObjects</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ImportLeads</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ImportPersonal</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>InstallPackaging</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>LightningConsoleAllowedForUser</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>LightningExperienceUser</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ListEmailSend</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageAnalyticSnapshots</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageAuthProviders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageBusinessHourHolidays</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCallCenters</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCases</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCategories</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCertificates</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageContentPermissions</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageContentProperties</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageContentTypes</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCustomPermissions</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageCustomReportTypes</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageDashbdsInPubFolders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageDataCategories</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageDataIntegrations</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageDynamicDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageEmailClientConfig</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageExchangeConfig</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageHealthCheck</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageInteraction</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageInternalUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageIpAddresses</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageKnowledge</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageKnowledgeImportExport</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageLeads</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageLoginAccessPolicies</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageMobile</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageNetworks</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManagePackageLicenses</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManagePasswordPolicies</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageProfilesPermissionsets</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManagePropositions</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManagePvtRptsAndDashbds</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageRecommendationStrategies</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageRemoteAccess</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageReportsInPubFolders</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageRoles</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageSearchPromotionRules</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageSharing</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageSolutions</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageSubscriptions</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageSynonyms</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageUnlistedGroups</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ManageUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>MassInlineEdit</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>MergeTopics</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ModerateChatter</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ModifyAllData</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ModifyDataClassification</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ModifyMetadata</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>NewReportBuilder</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>Packaging2</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>PrivacyDataAccess</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>PublishPackaging</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>RemoveDirectMessageMembers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ResetPasswords</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>RunReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ScheduleReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SelectFilesFromSalesforce</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SendSitRequests</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ShareInternalArticles</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ShowCompanyNameAsUserBadge</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SolutionImport</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubmitMacrosAllowed</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeDashboardRolesGrps</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeDashboardToOtherUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeReportRolesGrps</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeReportToOtherUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeReportsRunAsUser</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeToLightningDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>SubscribeToLightningReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>TransactionalEmailSend</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>TransferAnyCase</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>TransferAnyEntity</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>TransferAnyLead</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>UseTeamReassignWizards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>UseWebLink</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewAllData</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewAllUsers</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewDataAssessment</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewDataCategories</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewDataLeakageEvents</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewEventLogFiles</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewFlowUsageAndFlowEventData</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewHealthCheck</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewHelpLink</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewMyTeamsDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewPublicDashboards</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewPublicReports</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewRoles</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>ViewSetup</name> </userPermissions> <userPermissions> <enabled>true</enabled> <name>WorkCalibrationUser</name> </userPermissions> </Profile>
Trail Trackerをインストールする必要があります。 [設定] から[AppExchange マーケットプレイス] を選択し、AppExchange サイトが開くので、Trail Tracker を探してインストールします。
TrailTracker が検索結果に出てこない場合は、日本語を英語に切り替えましょう。
「New Badges (Last 90 Days)」レポートは、インストールしたアプリケーションに含まれています。 アプリケーションがインストールできていれば出せるので順番通りにやりましょう。
アプリケーションは[設定] から[アプリケーションマネージャ] を選択します。 [新規 Lightning アプリケーション] を選択してウィザード通りに作ります。
カスタムアプリケーションのメタデータ
<?xml version="1.0" encoding="UTF-8"?> <CustomApplication xmlns="http://soap.sforce.com/2006/04/metadata"> <brand> <headerColor>#0070D2</headerColor> <shouldOverrideOrgTheme>false</shouldOverrideOrgTheme> </brand> <formFactors>Large</formFactors> <isNavAutoTempTabsDisabled>false</isNavAutoTempTabsDisabled> <isNavPersonalizationDisabled>false</isNavPersonalizationDisabled> <label>人事部</label> <navType>Standard</navType> <tabs>standard-home</tabs> <tabs>standard-Feed</tabs> <tabs>standard-Case</tabs> <tabs>standard-report</tabs> <tabs>standard-Dashboard</tabs> <uiType>Lightning</uiType> <utilityBar>UtilityBar</utilityBar> </CustomApplication>
出来上がりは以下のようになります。
画面からクリックしていくだけで作れる内容で、とてもSalesforceらしくて良い課題でした。