返信が遅くなり申し訳ありません。
漠然とした質問にもかかわらず、回答いただきありがとうございます。
現状、未だ解決に至っておりません。
調べた中で、確認させていただきたい内容がございます。
■XMLHttpRequestを利用して実装を試みた場合--------------------------------------------------------------------------------------------------------------------
接続先(クラウドサイン)側にてCORSの設定をしましたが、リクエストを送信するタイミングで以下のエラーになってしまいます。
Access to XMLHttpRequest at ‘[https://api-sandbox.cloudsign.jp/\*\*\*\*](https://api-sandbox.cloudsign.jp/ **** )’ from origin ‘https://****.cybozu.com’ has been blocked by CORS policy
:No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
「Access-Control-Allow-Origin」ヘッダーが、存在しないためエラーになっているのではないかと考えています。
たしかに、Kintoneの「セキュアコーディング-ガイドライン」というところに、以下の記載があります。
クロスドメイン制約
クロスドメイン制約のため、XHR(XMLHttpRequest) を使用したcybozu.comと外部サイトとの通信はできません。Access-Control-Allow-Origin ヘッダーは付与できません。
これは、接続先側のサービスで、CORS設定などいくら対応したとしても、
KintoneのJavaScriptからは、XMLHttpRequestを利用して接続できないという理解で良いのでしょうか?
(以下のスレッドで解決した旨の記載はあったので、どうにかできるのでしょうか・・)
[https://developer.cybozu.io/hc/ja/community/posts/255646366-外部システムへのAPI実行時-data部分の記載について])
■kintone.proxy.uploadを利用して実装を試みた場合--------------------------------------------------------------------------------------------------------------------
接続先のAPIのRequest bodyは「multipart/form-data」という形式の指定があり、
name(string)、uploadfile(string($binary))をセットするよう記載があります。
そのため、FormDataという型にファイルをセットして、実行しますが、upload実行のタイミングで以下のエラーになってしまいます。
Uncaught (in promise) Error: Usage: kintone.proxy.upload(url, method, headers, data, opt_callback, opt_errback)
以下のように実装を入れているのですが、間違っているところ等ありましたら、ご教授頂けると幸いです。
(ファイルやID、Tokenは、設定されています。)
// ファイルをダウンロード
var url = kintone.api.urlForGet(‘/k/v1/file’, { fileKey: files[0].fileKey }, true);
return kintone.proxy(url
, ‘GET’
, {“Authorization”: ‘Basic ****’, “X-Cybozu-Authorization”: ‘****’}
, {});
}).then(function(resp2) {
file = resp2[0];
var blob = new Blob([file]);
var formData = new FormData();
formData.append(“name”, “ファイル名”);
formData.append(“uploadfile”, blob);
// ドキュメントにファイルを追加(POST /documents/{documentID}/files)
return kintone.proxy.upload(‘https://api-sandbox.cloudsign.jp/documents/’ + documentID + ‘/files’
,‘POST’
, {“Authorization”: 'Bearer ’ + accessToken, “Content-Type”: “multipart/form-data”}
, {
‘format’: ‘RAW’,
‘value’: formData,
}
);
}).then(function(resp3) {
// 続きの処理
});
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
何卒宜しくお願いいたします。