Labyrinth of Wisdom

-This is My Archive-


【Salesforce】Dropbox APIを使用してApexクラスからDropboxを操作する(前編)

Dropbox APIを使用して、ApexクラスからDropboxを色々操作してみたのでメモします。

今回は、Dropboxのアカウントは無料のものを使用します。

準備

1.Dropbox API利用者登録

まず下記リンク先でDropbox API利用者登録をします。

https://www.dropbox.com/developers/apps

方法は下記リンク参照。 qiita.com

ここで生成したアクセストークンは後で使用します。

2.リモートサイトの登録

次にSalsforce側でDropbox APIのURLを登録します。

Salesforceにログインし、下記にアクセスしてください。

設定>セキュリティのコントロール>リモートサイトの設定>新規リモートサイト

リモートサイト名には適当な値を入力してください。

今回は、「ファイルの作成」「ファイル名の取得」「ファイルの中身を取得」を行うので、下記のURLをそれぞれ登録します。

//ファイル作成・ファイル名取得に使用
https://api.dropboxapi.com

//ファイルの中身取得に使用
https://content.dropboxapi.com

Dropbox APIの公式サイトです。全編英語です。 www.dropbox.com

日本語でまとめている方がいたので、こちらの方が見やすいです。

Dropbox API v2 仕様まとめ · GitHub

接続

1.ファイル作成

準備が整ったので、実際に接続していきます。 はじめにファイル作成のサンプルを作ってみました。

フィールド変数にアクセストークン用の変数を用意して代入。本当はカスタム設定とかに記載する方が良いんですが今回は省略。 kayakuguri.github.io maroyaka.hateblo.jp

今回はファイル作成なので、ファイル作成用のURLをエンドポイントとして設定。 メソッドはポスト。

アクセストークンをセットし、ファイルの種類と配置先を指定。

これでDropbox内のSalesforce DocumentsフォルダにTest.txtが作成されます。

public class DropboxConnectController {

    //アクセストークン
    private static String acToken = 'Your_Access_Token';

    // ファイル作成
    public void createFileInDropbox(){
        HttpRequest req = new HttpRequest();
        req.setEndpoint('https://content.dropboxapi.com/2/files/upload');
        req.setMethod('POST');

        // アクセストークンをセット
        req.setHeader('Authorization', 'Bearer ' + acToken);
        // ファイルの種類
        req.setHeader('Content-Type', 'text/plain; charset=dropbox-cors-hack');
        // ファイルの格納先
        req.setHeader('Dropbox-API-Arg','{ "path":"/Salesforce Documents/Test.txt" }');
        
        Http http = new Http();
        HTTPResponse res = http.send(req);
        System.debug('ステータスコード:'+res.getStatusCode());
        System.debug(res.getBody());
    }

}