APIトークンを利用した他アプリレコード参照について

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の実行

Ryoji様、ろどすた様

アドバイス有難うございます!

想定している動作の確認ができました!