1
0

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 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

任意のSalesforceアプリケーションをブラウザで開くワンライナー

Posted at

sf org opentarget-orgに設定されてる組織をブラウザで開ける。でも設定画面が開くので、毎回開発中のアプリをランチャーから選択して開き直さないといけいけない。できれば直接アプリを開きたい。

試行錯誤したところこんな感じでできた。

sf org open --path=/lightning/app/$(sf data query --query "SELECT DurableId FROM AppDefinition WHERE DeveloperName = 'アプリのAPI参照名'" --json | jq -jr ".result.records[].DurableId")

解説

sf org open--pathオプションでSalesforceの任意のページを開ける。
例えばリードの一覧画面ならこう:

sf org open --path=/lightning/o/Lead/list

--pathオプションでSalesforceアプリケーションのパスを指定できればアプリを開ける。
しかしSalesforceアプリケーションは特定のURLを持たないっぽい。
なのでランチャーのリンクからパスを取り出す。手元のスクラッチ組織でセールスアプリのリンク先はこうなっていた。

https://app-app-881-dev-ed.scratch.lightning.force.com/lightning/app/06m1y000000UWNUAA4

このURLのパス部分を--pathに渡すとセールスアプリがブラウザで開く。

sf org open --path=/lightning/app/06m1y000000UWNUAA4

このパスのIDのところを任意のアプリのものに変更すれば任意のアプリをブラウザで開くことができるはず。
このIDは、このヘルプからリンクされてる、

このページによると、

06mで始まるIDはAppDefinitionオブジェクトのIDとのこと。
SOQLで叩いてみる。

$ sf data query --query "SELECT FIELDS(ALL) FROM AppDefinition LIMIT 1" --json
{
  "status": 0,
  "result": {
    "records": [
      {
        "attributes": {
          "type": "AppDefinition",
          "url": "/services/data/v58.0/sobjects/AppDefinition/06m1y000000UWNBAA4"
        },
        "Id": "000000000000000AAA",
        "DurableId": "06m1y000000UWNBAA4",
        "Label": "セールス",
        "MasterLabel": "salesforce",
        "NamespacePrefix": "standard",
        "DeveloperName": "Sales",
        "LogoUrl": "/img/salesforce-noname-logo-v2.svg",
        "Description": "世界で最も高い評価を受けた営業支援ソリューション",
        "UiType": "Aloha",
        "NavType": "Standard",
        "UtilityBar": null,
        "HeaderColor": "#0070D2",
        "IsOverrideOrgTheme": false,
        "IsSmallFormFactorSupported": false,
        "IsMediumFormFactorSupported": false,
        "IsLargeFormFactorSupported": false,
        "IsNavPersonalizationDisabled": false,
        "IsNavAutoTempTabsDisabled": false,
        "IsNavTabPersistenceDisabled": false
      }
    ],
    "totalSize": 1,
    "done": true
  },
  "warnings": []
}

取得できた。DurableIdに先ほどのIDと似たものが見える。

AppDefinitionオブジェクトを確認するとDurableIdは「アプリケーションの一意の仮想 Salesforce ID」らしい。

AppDefinition | Salesforce プラットフォームのオブジェクトリファレンス | Salesforce Developers

DeveloperNameがAPI参照名で一意になってそうなので、その辺りを踏まえてワンライナーにする。

sf org open --path=/lightning/app/$(sf data query --query "SELECT DurableId FROM AppDefinition WHERE DeveloperName = 'アプリのAPI参照名'" --json | jq -jr ".result.records[].DurableId")

これでできた。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?