發表文章

目前顯示的是有「SFDX」標籤的文章

如何大規模地更新各 profile 對於某個 object 的 record type 的存取權限 How to mass update record type visibility for every profile?

圖片
情境說明 之前有一篇談到 如何快速用 SOQL 撈出哪些 Profile / Permission Set 有權限對某特定 Object 做 Create/Read/Update/Delete 那篇的主題是針對 object record的 CRUD 在討論。但今天我們有另一個不同的面向要處理:如何大規模地查看或更新各 profile 對於某個 object 的 record type 的存取權限。 這又是一個獨立的設定了。不是 record 層級的設定,也不是 Field-Level Security 的設定。是 Record Type 的設定。 若只是要更動一兩個 profile 的 record type access permission 倒也不難,網頁上滑鼠點一點即可。但如果今天我們需要大模模更動呢? 例如我們有某一個既有的Opportunity Record Type,想要一次開給所有 Profile 都能有存取權限。或是反過來,想要讓僅一兩個 Profile 擁有存取權限,其它通通都不準看到。 難道我們要一個個點進每一個 Profile 去慢慢檢查、慢慢設定嗎? 此處提供一個沒那麼辛苦的解法。 解法概念 用 SFDX 下載 Profile and Record Type 的 XML 檔 用 Visual Studio Code 尋找、大量取代 Deploy 回 Salesforce 解法細節     第0步,把Visual Studio Code 和 SFDX 環境設定好。 用 SFDX 下載 Profile and Record Type 的 XML 檔 準備同時包含 Profile 和 RecordType的 XML package.xml <? xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?> < Package xmlns = "http://soap.sforce.com/2006/04/metadata" > < types > < members > * </ members > ...

太實用了!用 SFDX 下載全Email Template

下載 非 Unfiled Public Classic Email Templates  ('unfiled$public')的指令可以參考這篇:  https://gist.github.com/jongpie/6cef55323179bc71300efb3d94b48165 若要下載  Unfiled Public Classic Email Templates 請自組指令 SELECT DeveloperName FROM EmailTemplate WHERE FolderId = '00DXXXXXXXXXXXXXXX' sfdx force:source:retrieve --metadata EmailTemplate:'unfiled$public'/template1,EmailTemplate:'unfiled$public'/template2,...

Syntax Reference 常用語法備忘: 如何使用SFDX Deploy / How to use SFDX to deploy Apex Code and Run Specific Test Class

Basic 基本語法 sfdx force:source:deploy -m ApexClass:MyClass -l RunSpecifiedTests  --runtests=MyClass_Test -w 3 -u PRD 同時 Deploy Apex Class and Apex Trigger sfdx force:source:deploy -m "ApexTrigger:MyTrigger,ApexClass:MyClass" -l RunSpecifiedTests  --runtests=MyClass_Test -w 3 -u PRD 同時 Deploy Apex Trigger 和多個 Apex Class sfdx force:source:deploy -m "ApexTrigger:MyTrigger,ApexClass:MyClass, ApexClass:MyClass_Test" -l RunSpecifiedTests  --runtests=MyClass_Test -w 3 -u PRD Note 這篇 有說到同一個 type 如果要 deploy 多個 item,comma 需要做 encode: Don’t: sfdx force:source:deploy -m "Profile:Standard User,Layout:Page,Console" Do: sfdx force:source:deploy -m "Profile:Standard User,Layout:Page%2CConsole" 但我試了還是不行……會出現 Error   MyClass%2C MyClass_Test    An object ' MyClass%2C MyClass_Test ' of type ApexClass was named in package.xml, but was not found in zipped directory 若有人知道我哪裡弄錯了,還請分享告知! 

如何在 Visual Studio Code 或是 PowerShell下指令來 query data 並存成 CSV檔? How to query data by SOQL and save it as a csv by SFDX?

前言 最近 workbench 經常出現 Application Error,令人抓狂。 (參考文章: workbench 一直出現 Application error ) 有一個不算是完美的替代方案,就是使用 Visual Studio Code 的 SOQL Query Builder ( Visual Studio Code now includes a SOQL Builder . Try it today!  ) 其中一個不完美的點就是,export csv/json 的時候只能匯出2000筆…… 這實在是個硬傷。 在此提供另一個不使用 workbench 也不用 Query Builder,一樣可以匯出 csv 的方法。 做法 請打開 PowerShell (可以在 VS Code 裡的 terminal,也可以直接在 Windows 開 PowerShell。 並修改以下 sample code後執行: sfdx force:data:soql:query -q "SELECT Id FROM Contact  WHERE createddate = last_n_days:1" -r "csv" -u <Salesforce Username> | out-file -encoding utf8 "Latest Contact.csv" 即可。

如何抓取Profile下的Login IP Ranges? How to retrieve Login IP Ranges of Profile via API?

圖片
 #背景說明 Salesforce 可以根據不同的 Profile 來設定不同的 IP 允許範圍白名單。如果 user 從白名單以外的地方登入,就會被擋下來。 那我們除了可以從 UI 點進去看 Login IP Ranges 之外,有沒有其它方式可以大量地抓取/修改/上傳 Profile 的 Login IP Ranges 呢? #相關解釋 這些 IP Ranges 不是 data,而是 metadata。所以諸如 SOQL 或是 Data Loader 之流,是抓不到這些資料的。 值得注意的是,在 Visual Studio Code 裡面的Org Browser 也找不到這款 metadata。 #解法 使用 SFDX command: sfdx force:source:retrieve -m "Profile:Salesforce Integration Profile" 即可在 force-app\main\default\profiles\ 這個路徑下找到此 Profile 的 XML 檔。 其中即列出了此 Profile 下所有的 Login IP Ranges。 其餘如法泡製即可。

Visual Studio Code左下角的environment一直切換失敗,何解?

圖片
症狀描述 VS Code左下角的 environment,明明用滑鼠點選切換到其他環境,右下角也有跳出一個正在跑切換的狀態提示框,最後也顯示為 successfully 了。但左下角這個就是不肯切換,在VSC用滑鼠點選 deploy,也還是會 deploy 到左下角顯示的環境。     除非在 Terminal 用指令指定要 deploy 到哪個環境,才會成功。用 推測 可能是 VSC 所設的 Project 路徑跟其它程式共用而有所衝突(例如 OneDrive, Google Drive, etc.) 解法 重開一個 Project ,設在其它比較乾淨的路徑,立可順暢運行。