ストレージサービス(BOX等)との連携について

いつもお世話になっております。
現在、Kintoneを使用した業務管理システムの開発を進めており、不明点がどうしても解決できなかったため、初めて投稿させていただきます。

内容としては、クライアントの業務管理を行うシステムを構築するに当たり、案件app、活動履歴app、顧客管理app、見積管理appを使用しているのですが、業務に関するデータは全てBOXで管理したいと思っております。

それにあたり、既にご用意いただいているBOX for kintoneプラグインを使用しようと思うのですが、こちらは詳細画面にてファイルをBOX上にアップロードするしようかと思います。
https://developer.cybozu.io/hc/ja/articles/205070124-Box-for-kintone

上記の仕様ではなく、フォームに元々用意されている「添付ファイル」フィールドにアップロードされたファイルを自動的にBOXにアップするようにするにしたいのですが、実現するにはどうすれば良いでしょうか?

他に似たようなスレッドがないか探てみたのですが、見当たらなかったので、こちらから質問させていただきました。
※ちなみにストレージサービスはBOXが絶対ということではなく、上記要望が満たされるのであれば、DropboxでもOneDriveでも問題ないと考えております。

分かる方がいらっしゃいましたらご教授いただけたら幸いです。
何卒よろしくお願いいたします。

Dropboxで実装しました。
Dropbox側でアクセストークンを取得する必要があります。

なお、日本語のファイルではエラーがでます。(多分デコードすればよいと思いますが)
編集画面保存成功時に発火します。

 

jQuery.noConflict();

(function ($) {

    "use strict";

    kintone.events.on("app.record.edit.submit.success", function (event) {

        //設定

        const subDomain = ""; //○○.cybozu.com の○○○の部分を入力

        const accessToken = ""; //Dropboxのアクセストークン

        const attached = "添付ファイル"; //添付ファイルのフィールドコード

        //変数宣言

        const record = event.record;

        const fileKey = record[attached].value[0].fileKey;

        const fileName = record[attached].value[0].name;

        const getUrl = `https://${subDomain}.cybozu.com/k/v1/file.json?fileKey=${fileKey}`;

        //ファイル取得

        var xhr = new XMLHttpRequest();

        xhr.open('GET', getUrl);

        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

        xhr.responseType = 'blob';

        xhr.onload = function () {

            if (xhr.status === 200) {

                //Dropboxへアップロード

                const data = xhr.response;

                $.ajax({

                    url: 'https://content.dropboxapi.com/2/files/upload',

                    type: 'post',

                    data: data,

                    processData: false,

                    contentType: 'application/octet-stream',

                    headers: {

                        "Authorization": "Bearer " + accessToken,

                        "Dropbox-API-Arg": '{"path": "/' + fileName + '","mode": "add","autorename": true,"mute": false}'

                    },

                    success: function (data) {

                        console.log(data);

                    },

                    error: function (data) {

                        console.error(data);

                    }

                });

            }

        };

        xhr.send();

    });

})(jQuery);

 

Teru様

お世話になっております。岡と申します。
ご連絡が遅くなり申し訳ありません。

また、上記の件、誠にありがとうございます。

お恥ずかしながら、当方のスキルレベルで解読が難しい状態なのですが、、、
一生懸命解読してみて、いただいたソースで実装してみます。

また不明点がありましたら再度ご連絡させていただきます。
何卒よろしくお願いいたします。