いつもお世話になっております。
現在、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様
お世話になっております。岡と申します。
ご連絡が遅くなり申し訳ありません。
また、上記の件、誠にありがとうございます。
お恥ずかしながら、当方のスキルレベルで解読が難しい状態なのですが、、、
一生懸命解読してみて、いただいたソースで実装してみます。
また不明点がありましたら再度ご連絡させていただきます。
何卒よろしくお願いいたします。