見出し画像

SalesforceにAPIで画像をアップして表示する方法【ノーコードでOK】

Bubble等のノーコードツールで、Salesforceと連携したアプリを作成するときに、ユーザーがアップロードした画像やファイルをSalesforceのCRMに取り込みたいことがあります。

特に個人情報などが含まれるファイルは、Salesforceにアップロードすることで安全に管理でき、ファイルのURLが分かれば誰でも閲覧できるような危険な状況を回避できます。

今回は、APIを使って画像をSalesforceにアップロードし、取引先と紐付け、その後CRM上で表示するところまでを解説していきます。

なお、全てZapier・Make等のiPaaSのHTTPリクエストで実行可能です。

外部アプリから画像をアップロードする手順

以下の順番に解説していきます。

1.Bubble上でファイルをbase64に変換する
2.APIでSalesforceにファイルをアップする
3.APIでSalesforceにファイルを取引先と紐付ける
4.Salesforceで公開したファイルを表示する

1.Bubble上でファイルをbase64に変換する

画像やPDFなどのファイルは、そのままの状態ではAPI等で送信することができません。

そのため、一度ファイルを、base64という形式で長い文字列のデータに変換(エンコード)し、その文字列をAPIで送信します。

Bubble等のノーコードツールには、ほとんどの場合、画像やファイルを変換・送信する仕組みがあります。

Bubbleの場合であれば、画像ファイルに「:encoded in base64」というアクションが存在しますし、あるいは、プラグインを導入することで、ファイルを簡単にbase64形式にエンコードし、文字列としてAPIに利用できます。

※base64に変換時に冒頭に付与される「data:image/png;base64,」等のデータ形式の情報は不要です。

変換後、APIで直接Salesforceへ情報を送信することも可能ですが、私の場合は、以下のようにMakeのwebhookのendpointにPOSTして利用しています。

Makeでwebhookを利用
※responseを返さないと
Bubbleでエラーになります
webhookで発行したURLにPOST

2.APIでSalesforceにファイルをアップする

Salesforceにファイルをアップロードするためには、HTTPリクエストを利用します。

残念ながら、MakeやZapierでは、Salesforceへのファイルアップロードにネイティブ対応はしていないため、HTTPリクエストを利用することになります。

MakeのHTTPリクエスト

APIでSalesforceにアクセスするには、まず「アクセストークン」をHeaderに含める必要があります。詳しくはこちらの記事をご覧ください。

さて、Salesforceにファイルをアップロードするには、まずは「ContentVersion」を作成します。

Salesforceでは、アップロードしたファイルのバージョンの管理機能がありますが、まずはファイルの最初のバージョンをアップロードします。

・Endpoint URL(POST)

https://自分のドメイン.my.salesforce.com/services/data/v58.0/sobjects/ContentVersion


・Header

Authorization: Bearer アクセストークン


・Body

{
    "Title": "Salesforceに表示する画像のタイトル",
    "Pathonclient":"拡張子を含む適当な画像名(例:image.png)",
    "VersionData":"base64の文字列"
}

その他のパラメータとしては、Description(説明文)やOwnerId(所有者ID)などがあります。詳しくはヘルプをご覧ください。

また、次に紹介するContentDocumentIdをパラメータに含めることで、既存のファイルに新しいバージョンを追加することもできます。

さて、上記でPOSTした後に、Salesforceの項目の「ファイル」を見ると、送信したファイルがアップロードされていることが確認できます。

Responseでは、以下が返ってきます。

{
    "id": "作成されたContentVersionのID",
    "success": true,
    "errors": []
}

このidは、次にファイルを関連先と紐づけるために使います。

3.APIでSalesforceにファイルを取引先と紐付ける

ファイルをアップロードできましたので、次に、そのファイルと、取引先やユーザーを紐付ける方法をご紹介します。

紐付けを行うためには、まずアップロードしたファイルの「ContentDocumentId」をHTTPリクエストで取得します。

ContentDocumentIdは、様々なバージョンを含む一つのファイルに対応したIDです。

・Endpoint URL(GET)

https://自分のドメイン.my.salesforce.com/services/data/v58.0/query


・Header

Authorization: Bearer アクセストークン


・Parameter

?q=SELECT ContentDocumentId FROM ContentVersion WHERE Id ='2.で取得したContentVersionのID'

ここで、2.のresponseで返ってきたidを挿入します。

実行すると、レスポンスから、ContentDocumentIdを取得できます。

{
    "totalSize": 1,
    "done": true,
    "records": [
        {
            "attributes": {
                "type": "ContentVersion",
                "url": "/services/data/v58.0/sobjects/ContentVersion/XXX"
            },
            "ContentDocumentId": "XXX"
        }
    ]
}

次に、ここで取得したContentDocumentIdを使って、ファイルと関連先との紐付けを実行します。

・Endpoint URL(POST)

https://自分のドメイン.my.salesforce.com/services/data/v58.0/sobjects/ContentDocumentLink


・Header

Authorization: Bearer アクセストークン


・Body

{
    "contentDocumentId":"先ほどGETしたcontentDocumentId",
    "LinkedEntityId":"紐付けしたい取引先等のID",
    "Visibility":"例)ALLUsers",
    "ShareType":"例)V"
}

Visibilityは、ファイルを閲覧できるユーザの権限、ShareTypeはユーザや公開グループに共有する際に付与する権限を設定します。詳しくはヘルプをご覧ください。

実行すると、以下のようなレスポンスが返ってきます。

{
    "id": "XXXX",
    "success": true,
    "errors": []
}

Salesforceで確認すると、ファイルの「共有先」に、指定した取引先のID(閲覧者)が関連づけられていることを確認できます。

4.Salesforceで公開したファイルを表示する

最後に、アップロードしたファイル(画像)をCRMで表示する方法について、ご紹介します。

Salesforceにアップした画像を表示する方法はいくつかありますが、今回は、ここまでで取得したContentVersionIdと、ContentDocumentIdを利用して、PNGの画像を表示してみます。

https://自分のドメイン.file.force.com/sfc/servlet.shepherd/version/renditionDownload?rendition=ORIGINAL_Png&versionId=[入手したContentVersionId]&contentId=[入手したContentDocumentId]

※パラメータ「rendition」は、jpgの場合は「ORIGINAL_Jpg」となります。自分がアップロードしたファイルを別タブで開くと形式が確認できます。

このURLをブラウザに貼り付けて開くと、画像が表示されていることを確認できます。

※この方法で画像を閲覧できるのは、ファイルに指定された権限を満たすユーザーのみです。

さらに、このURLをimgタグのsrcに指定すれば、リッチテキストコンテンツとして、画像をCRM上に表示することができます。

APIでSalesforceのファイルも使いこなそう!

今回の記事は、以下の英語記事を参考にしました。

https://www.linkedin.com/pulse/how-upload-document-salesforce-files-using-rest-api-subhajit-goswami

Salesforceのファイルの操作は、通常のAPI操作よりも手順がやや多いものの、手順通りに実行すれば、さほど難しくはありません。

また、ここで紹介した方法は、MakeやZapierなどのiPaaSで、HTTPリクエストを使用すれば、ノーコードでも実行可能です(POSTMANなどでも一通り試すことができます)。

ぜひお手元のノーコードツールでお試しください。

お読みいただきありがとうございました!


この記事が気に入ったらサポートをしてみませんか?