Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tooling APIを触ってみた

Avatar for maaa_34 maaa_34
January 26, 2024

Tooling APIを触ってみた

2024/1/25,Salesforce Developers Meetup #32で発表した資料です。

Avatar for maaa_34

maaa_34

January 26, 2024
Tweet

Other Decks in Programming

Transcript

  1. Salesforce PlatformͰར༻Ͱ͖ΔAPIʢҰ෦ʣ 1. SOAP API 2. REST API 3. Bulk

    API 4. GraphQL API 5. Streaming API 6. Pub-Sub API 7. Metadata API 8. Tooling API … 4
  2. Salesforce PlatformͰར༻Ͱ͖ΔAPIʢҰ෦ʣ 1. SOAP API 2. REST API 3. Bulk

    API 4. GraphQL API 5. Streaming API 6. Pub-Sub API 7. Metadata API 8. Tooling API? … Salesforce֎෦ͷγεςϜ͕ར༻ 5 Salesforce։ൃऀ͕ར༻
  3. ྫ1 ΦϒδΣΫτ ͷҰཡ SELECT QualifiedApiName, MasterLabel FROM EntityDefinition ORDER BY

    QualifiedApiName // ࣮ߦ݁Ռྫ(Salesforce CLI) QUALIFIEDAPINAME MASTERLABEL ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ AcceptedEventRelation ࢀՃߦಈϦϨʔγϣϯ AccessControlPolicy Access Control Policy Account औҾઌ AccountChangeEvent औҾઌ มߋΠϕϯτ AccountCleanInfo औҾઌΫϦʔϯΞοϓ৘ใ AccountContactRole औҾઌ੹೚ऀͷ໾ׂ (লུ) Total number of records retrieved: 1757. EntityDe fi nitionΑΓऔಘ ඪ४ΦϒδΣΫτɺΧελ ϜΦϒδΣΫτɺ͍ͣΕͷ ৘ใ΋औಘ͕Մೳ https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_entityde fi nition.htm 11
  4. ྫ1 ΦϒδΣΫτ ͷҰཡ /** * ΧελϜΦϒδΣΫτ͚ͩʹߜΓࠐΉࡍ͸KeyPrefixΛར༻͢Δ * WHERE QualifiedApiName like

    ‘%__c’Ͱ͸ద੾ʹߜΕͳ͍ * https://salesforce.stackexchange.com/questions/ 371727/escape-underscore-in-soql-like-clause */ SELECT QualifiedApiName, IsReportingEnabled, IsActivityTrackable FROM EntityDefinition WHERE KeyPrefix LIKE ‘a%' ORDER BY QualifiedApiName // ࣮ߦ݁Ռྫ(Salesforce CLI) QUALIFIEDAPINAME ISREPORTINGENABLED ISACTIVITYTRACKABLE ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Application__c true false CannotReport__c false true EntityDe fi nitionΑΓऔಘ ΧελϜΦϒδΣΫτͷઃ ఆ஋΋औಘՄೳ(ҎԼྫ) • IsReportingEnabled : ʮϨϙʔτΛڐՄʯ • IsActivityTrackable : ʮ׆ಈΛڐՄʯ 12 https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_entityde fi nition.htm
  5. ઃఆը໘ͱൺֱ /** * ΧελϜΦϒδΣΫτ͚ͩʹߜΓࠐΉࡍ͸KeyPrefixΛར༻͢Δ * WHERE QualifiedApiName like ‘%__c’Ͱ͸ద੾ʹߜΕͳ͍ *

    https://salesforce.stackexchange.com/questions/ 371727/escape-underscore-in-soql-like-clause */ SELECT QualifiedApiName, IsReportingEnabled, IsActivityTrackable FROM EntityDefinition WHERE KeyPrefix LIKE ‘a%' ORDER BY QualifiedApiName // ࣮ߦ݁Ռྫ(Salesforce CLI) QUALIFIEDAPINAME ISREPORTINGENABLED ISACTIVITYTRACKABLE ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Application__c true false CannotReport__c false true 13
  6. ઃఆը໘ͱൺֱ /** * ΧελϜΦϒδΣΫτ͚ͩʹߜΓࠐΉࡍ͸KeyPrefixΛར༻͢Δ * WHERE QualifiedApiName like ‘%__c’Ͱ͸ద੾ʹߜΕͳ͍ *

    https://salesforce.stackexchange.com/questions/ 371727/escape-underscore-in-soql-like-clause */ SELECT QualifiedApiName, IsReportingEnabled, IsActivityTrackable FROM EntityDefinition WHERE KeyPrefix LIKE ‘a%' ORDER BY QualifiedApiName // ࣮ߦ݁Ռྫ(Salesforce CLI) QUALIFIEDAPINAME ISREPORTINGENABLED ISACTIVITYTRACKABLE ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Application__c true false CannotReport__c false true 14
  7. ྫ2 ΦϒδΣΫτ ߲໨ͷҰཡ // ঎ஊΦϒδΣΫτͷ߲໨ΛҰཡදࣔ SELECT QualifiedApiName, LastModifiedDate FROM FieldDefinition

    WHERE EntityDefinition.QualifiedApiName = 'Opportunity' ORDER BY LastModifiedDate NULLS LAST // ࣮ߦ݁Ռྫ(Salesforce CLI) QUALIFIEDAPINAME LASTMODIFIEDDATE ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ DeliveryInstallationStatus__c 2024-01-21T23:10:38.000+0000 TrackingNumber__c 2024-01-21T23:10:38.000+0000 OrderNumber__c 2024-01-21T23:10:38.000+0000 CurrentGenerators__c 2024-01-21T23:10:38.000+0000 MainCompetitors__c 2024-01-21T23:10:38.000+0000 Id null IsDeleted null AccountId null ʢলུʣ FieldDe fi nitionΑΓऔಘ ※FieldDe fi nition΁ͷSOQL ΛWHERE۟ͳ͠Ͱ࣮ߦ͢Δ ͱΤϥʔʹͳΔͷͰཁ஫ҙ https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_ fi eldde fi nition.htm 15
  8. Tooling API SOQL࣮ߦํ๏ ࣍ͷΑ͏ͳπʔϧͰ࣮ߦՄೳ͕ͩɺݸਓతʹ͸Salesforce CLIΛਪ঑ πʔϧ໊ ར఺ ߟྀ఺  Salesforce

    CLI Salesforceެࣜ υΩϡϝϯτ௨ΓͷSOQL͕࣮ߦՄೳ Πϯετʔϧ͕ඞཁ CLI΁ͷशख़͕ඞཁ  ։ൃऀίϯιʔϧ SalesforceެࣜɺGUI Πϯετʔϧෆཁ SOQLͷग़ྗ݅਺͕ৗʹ1͔݅͠ग़ྗ͞ Εͳ͍৔߹͕͋Δ ग़ྗ݁Ռͷอଘ͕೉͍͠  curlίϚϯυ ଟ͘ͷ؀ڥͰར༻Մೳ Πϯετʔϧෆཁ ઀ଓΞϓϦέʔγϣϯઃఆ͕ඞཁ ࣮૷ίετ͕ߴ͍ 18
  9. Salesforce CLI % sf --version @salesforce/cli/2.24.4 darwin-arm64 node-v20.10.0 % sf

    data query --help Execute a SOQL query. USAGE $ sf data query -o <value> [--json] [--api-version <value>] [-q <value>] [-f <value>] [-w <value> [-b | -t]] [--async ] [--all-rows] [-r human|json|csv] FLAGS ʢলུʣ -q, --query=<value> SOQL query to execute. -r, --result-format=<option> [default: human] Format to display the results; the --json flag overrides this flag. <options: human|json|csv> -t, --use-tooling-api Use Tooling API so you can run queries on Tooling API objects. ʢলུʣ Tooling API༻Φϓγϣϯ͕ ଘࡏ͢Δ 20
  10. ࣮ߦྫ % sf auth web login --alias ${YOUR ALIAS} (Webϒϥ΢β͕ىಈ͢ΔͷͰɺTooling

    APIΛ࣮ߦ͍ͨ͠૊৫ͷϢʔ βʔͰSalesforce΁ϩάΠϯ͠ɺCLI΁ͷΞΫηεΛڐՄ) % sf data query --target-org ${YOUR ALIAS} \ --query "SELECT QualifiedApiName, IsReportingEnabled, IsActivityTrackable FROM EntityDefinition WHERE KeyPrefix LIKE 'a%' ORDER BY QualifiedApiName" \ --use-tooling-api QUALIFIEDAPINAME ISREPORTINGENABLED ISACTIVITYTRACKABLE ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Application__c true false CannotReport__c false true Total number of records retrieved: 2. Querying Data... done 21
  11. ରԠ͍ͯ͠Δϝλσʔλͷݸ਺(v60.0) Metadata API 591 Tooling API 258 Tooling APIݸ਺ :

    https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/reference_objects_list.htm Metadata APIݸ਺ : https://developer.salesforce.com/docs/metadata-coverage/60 23
  12. ྆APIͰରԠ͍ͯ͠Δϝλσʔλ Metadata API 591 Tooling API 258 ઃఆ w &OUJUZ%F

    fi OJUJPOΧελϜΦϒδΣΫτఆٛ w 'JFME%F fi OJUJPO߲໨ఆٛ w $VTUPN5BCΧελϜλϒ w 'MPXϑϩʔϓϩηεϏϧμʔ w ʜ ΞϓϦέʔγϣϯίʔυ৘ใ w "QFY$MBTT"QFYΫϥε w "QFY1BHF7JTVBMGPSDFϖʔδ w -JHIUOJOH$PNQPOFOU#VOEMF-8$ͷ)5.-+4$44 w ʜ 24 Tooling APIݸ਺ : https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/reference_objects_list.htm Metadata APIݸ਺ : https://developer.salesforce.com/docs/metadata-coverage/60
  13. Tooling APIͷΈରԠ͍ͯ͠Δϝλσʔλྫ Metadata API 591 Tooling API 258 ΞϓϦέʔγϣϯίʔυ։ൃ w

    "QFY-PH"QFYͷσόοάϩά w "QFY5FTU3FTVMU"QFY୯ମςετͷ݁Ռ w ʜ ύοέʔδ։ൃ w 1BDLBHFୈೋੈ୅ύοέʔδఆٛ w 1BDLBHF7FSTJPOύοέʔδόʔδϣϯ w ʜ 25 Tooling APIݸ਺ : https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/reference_objects_list.htm Metadata APIݸ਺ : https://developer.salesforce.com/docs/metadata-coverage/60
  14. ϝλσʔλҰཡΛऔಘ : Tooling API,Metadata API • Մೳͳ৔߹͸Tooling APIΛ׆༻ͨ͠ํָ͕ • ରԠ͍ͯ͠ͳ͍৔߹͸Metadata

    APIͰؤுΔ QBDLBHFYNM࡞੒ ιʔε௥੻ͳ͠ͷ৔߹ .FUBEBUB"1*Λݺͼग़ ͯ͠ϝλσʔλऔಘ 9.-ΛύʔεPSϑΝ Πϧ໊͔Β৘ใΛநग़ 5PPMJOH"1*Λݺͼ ग़ͯ͠402-Λ࣮ߦ Metadata API Tooling API ϝλσʔλҰཡΛऔಘ͢Δํ๏ 26