kintone初心者です。
発注アプリから、商品マスタアプリをAPIトークンを利用してレコードを一括取得し
ルックアップで商品選択を行いたいのですが、下記コードを発注アプリに組込み
コンソールを確認すると “このAPIトークンでは、指定したAPIを実行できません。” となります。
原因をご教授頂けないでしょうか。
※補足 商品マスタアプリは管理者のみアプリ閲覧権限を付与しています。
(function() {
"use strict";
kintone.events.on(["app.record.edit.show"],function(event){
var url = 'https://サブドメイン名.cybozu.com/k/v1/record.json';
var headers = {
//商品マスタアプリのAPIトークン(閲覧のみ付与)
'X-Cybozu-API-Token':'xxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
};
//商品マスタアプリ全件取得
var param = {
//商品マスタアプリのID
'app' : 46
};
kintone.proxy(url, 'POST', headers, param, function(body, status, headers) {
console.log(status, JSON.parse(body), headers);
}, function(error) {
console.log(error);
});
});
})();
こんにちは!
下記のカーソルAPIを利用すればレコードの一括取得ができると思いますので、試してみてください。
https://developer.cybozu.io/hc/ja/articles/360029152012
閲覧のみ可能なAPIトークンを指定しているにも関わらずレコードを追加しようとしているためです。
追加を許可すれば正常に動作すると思います。
Ryoji様
アドバイス有難う御座います。
APIトークンを指定したところ
以下のようなエラーが発生しております。
kintone.proxyの引数に間違えがあるのでしょうか?
レコードを取得したいのか追加したいのかどちらでしょうか。
追加であればparamの中身を書き換える必要があります。
取得であればPOSTをGETに書き換えるだけだと思います。
Ryoji様
今回の内容は取得となります。GETに変更したところ以下のような
エラーが発生しております。
取得ソース
(function() {
"use strict";
kintone.events.on(["app.record.edit.show"],function(event){
var url = 'https://サブドメイン.cybozu.com/k/v1/record.json';
var headers = {
//商品マスタアプリのAPIトークン(権限:閲覧/追加/編集)
'X-Cybozu-API-Token':'hogehogehogehogehoge',
'Content-Type': 'application/json'
};
var param = {
"app" : 57
};
kintone.proxy(url, 'GET', headers, param, function(body, status, headers) {
console.log(status,body)
}, function(error) {
console.log(error);
});
});
})();
ちなみに
登録(POST)の場合は問題なく登録出来ました。
(function() {
"use strict";
kintone.events.on(["app.record.edit.show"],function(event){
var url = 'https://サブドメイン.cybozu.com/k/v1/record.json';
var headers = {
//商品マスタアプリのAPIトークン(権限:閲覧/追加/編集)
'X-Cybozu-API-Token':'hogehogehogehogehoge',
'Content-Type': 'application/json'
};
var param = {
"app" : 57,
"record": {
"依頼番号": {
"value": moment().format("YY-MMDD-HHmmss")
}
}
};
kintone.proxy(url, 'POST', headers, param, function(body, status, headers) {
console.log(status,body)
}, function(error) {
console.log(error);
});
});
})();
>取得であればPOSTをGETに書き換えるだけだと思います。
これは誤りでした。GETの場合はアプリIDや条件をurlに含める必要があります。
詳細はリンク先のドキュメントをご参照ください。
https://developer.cybozu.io/hc/ja/articles/202166320-外部APIの実行